Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getResourceAsStream在jUnit上工作,但在Tomcat上不工作_Java_Tomcat_Junit - Fatal编程技术网

Java getResourceAsStream在jUnit上工作,但在Tomcat上不工作

Java getResourceAsStream在jUnit上工作,但在Tomcat上不工作,java,tomcat,junit,Java,Tomcat,Junit,我有一个第三方库,它可以与jUnit一起使用,但没有部署到tomcat。深入研究代码,我发现它在这里失败了: final String path = "/api-version.dat"; final InputStream stream = ClassLoader.class.getResourceAsStream(path); api-version.dat位于jUnit测试上,但在Tomcat上执行相同操作会导致NullPointerException,因为Tomcat无法获取api版本

我有一个第三方库,它可以与jUnit一起使用,但没有部署到tomcat。深入研究代码,我发现它在这里失败了:

final String path = "/api-version.dat";
final InputStream stream = ClassLoader.class.getResourceAsStream(path);
api-version.dat位于jUnit测试上,但在Tomcat上执行相同操作会导致
NullPointerException
,因为Tomcat无法获取api版本文件。此文件存在并且位于第三方jar中。到目前为止,我所尝试的:

  • Check jar被导入到Tomcat中:它在WEB-INF/lib中,所以我会说是的
  • 创建一个api-version.dat文件并将其放在我的资源文件夹中(我使用maven)。不起作用

有什么想法吗?

在Java EE环境中使用:

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

有关详细信息,请参见。

在Java EE环境中使用:

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

请参阅中的详细信息。

打印出
System.getProperty(“java.class.path”)
并检查lib是否在那里。JAR文件中api-version.dat文件的路径是什么?JAR文件位于WEB-INF/lib还是它的子目录中?打印出
System.getProperty(“java.class.path”)
并检查lib是否在那里。JAR文件中api-version.dat文件的路径是什么?JAR文件是位于WEB-INF/lib中还是它的子目录中?感谢您的帮助,但是,它是第三方库,我无法修改它。这是否意味着我无法将其部署到JEE环境中?对。是否可以继承该类并重写该方法?另一种方法是在类中注入一个新方法,但它很复杂。我已经重写了该类,这也不起作用。如果我返回一个字符串作为版本,它可以工作,但是我希望有一个更简洁的方法。谢谢你的这个,但是,它是一个第三方库,我无法修改它。这是否意味着我无法将其部署到JEE环境中?对。是否可以继承该类并重写该方法?另一种方法是在类中注入一个新方法,但它很复杂。我已经重写了该类,这也不起作用。如果我返回一个字符串作为版本,它就可以工作,但是我想要一个更简洁的方法。