简单的问题是:如何使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和得到一个异常告诉我的包不能被发现。
对更好的类路径的建议?
谢谢,这确实工作。这与我最初的情况稍有不同,相当于PropGetter的封装在JAR中,但我也这样做了,它仍然可以正常工作。第三方案件坚决地失败,我直接从javascript调用ResourceBundle。我会继续挖掘,至少这个答案证实了资源加载的一般情况的行为如预期。 – djna