【发布时间】:2014-04-17 11:31:33
【问题描述】:
简单的问题是:如何使 Java 资源包可用于从 Worklight 适配器访问的 Java JAR 中的代码?我认为这相当于:Java 在 Worklight 适配器下使用的类路径是什么?
原因:我们使用与特定企业服务通信的第三方 Java 库,它有自己的配置机制来确定该服务的位置,该机制使用资源包。
我们将库 JAR 放在 server/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
我们看到第三方代码尝试完全使用这种模式,特别是 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 文件的基础中,并将其添加到 server/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 文件添加到 server/lib 并得到一个异常,告诉我找不到捆绑包。
关于更好的类路径的建议?
【问题讨论】:
标签: ibm-mobilefirst worklight-adapters