2014-04-17 125 views
0

簡單的問題是:如何使Java資源包可用於從Worklight適配器訪問的Java JAR中進行編碼?我認爲這相當於:Worklight適配器下的Java使用的類路徑是什麼?工作燈適配器,Java類路徑

原因:我們使用與特定企業服務通信的第三方Java庫,它具有自己的配置機制來確定服務的位置,該機制使用資源束。

我們把庫JAR在服務器/ lib文件夾,併成功可以調用從適配器庫代碼:

manager = com.third.party.manager.getInstance(); 
    // manager is correctly obtained 
    token = manager.talkToServer(); 
    // this fails with an error indicating that the server location is unknown 

我們看到第三方代碼試圖使用的正是這種模式,特別是the3的getBundle的變體光盤()是如下所示:

java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("ThirdParty"); 
Enumeration<String> enumeration = bundle.getKeys(); 

while (enumeration.hasMoreElements()){ 
String str = enumeration.nextElement(); 
System.out.println("property " + str); 
    //etc 

現在,我期待我的包資源包在一個新的JAR文件的基礎並將其添加到服務器的/ lib目錄,並將它撿起。我創建了資源JAR文件,其中包含

ThirdParty.properties 

,並作爲測試創建了一個包含上面的代碼有點Java應用程序,並增加了資源JAR到應用程序的類路徑;我們按預期加載的包。

我然後轉換是Java中適配器代碼:

var bundle = java.util.ResourceBundle.getBundle("ThirdParty"); 

var enumeration = bundle.getKeys(); 

while (enumeration.hasMoreElements()) 
{ 
    var str = enumeration.nextElement(); 
    var val = bundle.getString(str);  
} 

加入我的財產的JAR文件到服務器的/ lib和得到一個異常告訴我的包不能被發現。

對更好的類路徑的建議?

回答

2

我剛試過,一切正常。步驟我試圖重現該問題:

  1. 創建新的WL項目,WL工作室6.1
  2. 新增props.properties文件與一個單一的名=安東財產
  3. 右鍵點擊在Eclipse中它,導出 - > Java - > JAR文件。我選中的唯一複選框是導出生成的類文件和資源。我命名刪除props.properties文件resources.jar
  4. 和複製resources.jar服務器/ lib目錄文件夾
  5. 創建適配器,添加下列步驟

    function test(){ 
        return { 
         data: com.anton.PropGetter.getProp("name") 
        }; 
    } 
    
  6. 創建PropGetter.java類在com。安東包下面的代碼

    package com.anton; 
    
    import java.util.ResourceBundle; 
    
    public class PropGetter { 
        public static String getProp(String propName){ 
         ResourceBundle bundle = ResourceBundle.getBundle("props"); 
         return propName + " :: " + bundle.getString(propName); 
        } 
    } 
    
  7. 測試適配器過程中,得到了以下的輸出:

    { 
        "data": "name :: anton", 
        "isSuccessful": true 
    } 
    
+0

謝謝,這確實工作。這與我最初的情況稍有不同,相當於PropGetter的封裝在JAR中,但我也這樣做了,它仍然可以正常工作。第三方案件堅決地失敗,我直接從javascript調用ResourceBundle。我會繼續挖掘,至少這個答案證實了資源加載的一般情況的行爲如預期。 – djna