2017-02-18 118 views
0

我正在开发使用IBM Watson对话的聊天机器人。当我构建项目并运行时,它在java-sdk /对话的RequestUtils.java类中的inputStream中为空。但是当我从ide运行它的时候它就起作用了。无法找到version.properties文件

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

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

P.S:类的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 
+0

你可以在你的项目中提供你的类和'version.properties'文件的模式吗? – STaefi

+0

@ Dimuth-Ruwantha你可以在存储库中打开一个问题吗? https://github.com/watson-developer-cloud/java-sdk我可以在它上面工作并在工作后更新它 –

+0

@German Attanasio感谢您的快速响应。我在以下链接中打开了一个问题https://github.com/watson-developer-cloud/java-sdk/issues/586 –

回答

1

我用我自己的固定它。 该线程将从其父线程继承其上下文类加载器。如果您在整个应用程序中都没有做任何事情,那么所有线程都将以系统类加载器作为其上下文类加载器结束。 所以,我为当前线程自己设置contextClassLoader,如下所示。

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

现在它工作正常。