java - getResourceAsStream 在 jUnit 上工作,但不在 Tomcat 上工作

标签 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-version 文件。该文件存在并且位于第三方 jar 中。到目前为止我尝试了什么:

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

有什么想法吗?

最佳答案

在 Java EE 环境中使用:

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

查看更多信息 Difference between thread's context class loader and normal classloader .

关于java - getResourceAsStream 在 jUnit 上工作,但不在 Tomcat 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19407577/

相关文章:

java - 快速 JUnit 类测试测试未失败

java - 字段 'user' 上的对象 'userProfiles' 中的字段错误 : rejected value [3];

java - 无法创建动态 Web 项目?

Tomcat 9 - 为 manager-gui 使用非明文密码无法正常工作

java - `ServletContext`接口(interface)是否由Tomcat服务器内部的任何类实现?

android - 尝试在 Eclipse 中运行 Android JUnit 测试失败?

java - 如何使用 Java 将查询数据从 Google Cloud Datastore 导出到 csv?

java - 如何使用正则表达式删除引号

java - 数字拼图编码

java - 使用mockito的赋值方法