2014-04-17 77 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