2013-10-16 38 views
0

我有一个第三方库,可以与jUnit一起使用,但不会部署到tomcat。挖掘到代码中,我可以看到它失败在这里:getResourceAsStream在jUnit上工作,但不在Tomcat上

final String path = "/api-version.dat"; 
final InputStream stream = ClassLoader.class.getResourceAsStream(path); 

与API version.dat位于JUnit测试,但这样做在Tomcat结果NullPointerException同样由于到Tomcat无法获得API版本文件。该文件存在,它位于第三方jar内。什么到目前为止,我曾尝试:

  • 检查罐子被导入到Tomcat:这是WEB-INF/lib目录里面,所以我会说是
  • 创建API-version.dat文件,并把它放在我的资源文件夹(我使用maven)。不起作用。

有什么想法?

+1

打印出'System.getProperty(“java.class.path”);'并检查lib是否在那里。 –

+0

JAR文件中的api-version.dat文件的路径是什么? JAR文件位于WEB-INF/lib或其子目录中吗? –

回答

1

在Java EE enviroments使用:

final InputStream stream = Thread.currentThread() 
           .getContextClassLoader() 
           .getResourceAsStream(path); 

查看更多在Difference between thread's context class loader and normal classloader

+0

但是,这是一个第三方库,我无法对其进行修改。这是否意味着我无法将其部署到JEE环境? –

+0

对。是否有可能继承该类并重写该方法?另一种方法是在课堂上注入新的方法,但这很复杂。 –

+0

我已经重写了该类,但这也不起作用。它工作,如果我返回一个字符串作为版本,但我想要一个更清洁的方式。 –

相关问题