Junit + getResourceAsStream Return Null

2022-08-31 22:23:36

不知道这怎么可能。我重新阅读了getResourceAsStream,它总是返回null。

InputStream source = this.getClass().getResourceAsStream("test.xml");

在测试旁边.java Finder(使用OS X和Eclipse)是测试.xml

我可以在TextWrangler中打开它,并将其视为内部数据的存在。

这是一个 Junit 测试,如果它有任何区别。我查看了我们系统上现有的 Junit 测试,并以与工作示例完全相同的方式使用它(如文件所在的位置和代码本身)。

有什么小的区别可以阻止我假设getClass()返回正确的路径?


答案 1

它不会在类路径上找到资源。如果您使用的是 junit 和 maven,请确保通过在部分上添加 file 指令来复制目标/测试类上的资源<include><testResource>

您还可以通过使用

this.getClass().getResource(".")

并检查资源是否存在


答案 2

getResourceAsStream()正在使用 CLASSPATH,因此它将从类所在的任何位置加载,而不是从源文件加载。

我怀疑您需要将XML复制到与.class文件相同的目录中。


推荐