0

我正在使用 IBM Watson 对话开发一个聊天机器人。当我构建项目并运行时,它在 java-sdk/conversationinputStream的类中给出了 null。RequestUtils.java但是当我从 ide 运行它时它可以工作。

 InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("version.properties");

我注意到属性文件不在 jar 中。如何在构建时将此属性文件添加到 jar 中?可能的原因是什么?任何帮助表示赞赏。谢谢。

PS:类的scehema如下

parent
project1
project2
Maven Dependencies
|-conversation-3.5.3.jar
| |-package1
| |-packeage2
| |-META-INF
|-core-3.5.3.jar
  |-package1
  |-packeage2
  |  |-RequestUtils.class
  |-META-INF 
  |-version.properties   
4

1 回答 1

1

我自己修好了。该线程将从其父线程继承其上下文类加载器。如果您在整个应用程序中根本不做任何事情,那么所有线程最终都会以系统类加载器作为它们的上下文类加载器。所以我为当前线程自己设置了 contextClassLoader,如下所示。

ClassLoader classLoader = MyClass.class.getClassLoader();
Thread.currentThread().setContextClassLoader( classLoader );

现在它工作正常。

于 2017-02-24T06:27:51.773 回答