Java getResourceAsStream在jUnit上工作,但在Tomcat上不工作
我有一个第三方库,它可以与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版本
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环境中?对。是否可以继承该类并重写该方法?另一种方法是在类中注入一个新方法,但它很复杂。我已经重写了该类,这也不起作用。如果我返回一个字符串作为版本,它就可以工作,但是我想要一个更简洁的方法。