不确定这是怎么回事.我重读了getResourceAsStream,它总是返回null.
InputStream source = this.getClass().getResourceAsStream("test.xml");
Run Code Online (Sandbox Code Playgroud)
Finder中的test.java旁边(使用OS X和Eclipse)是test.xml
我可以在TextWrangler中打开它,并将其视为存在于内部的数据.
如果它有任何不同,这是一个Junit测试.我去查看我们系统上现有的Junit测试,并且我以与工作示例完全相同的方式使用它(如文件所在的位置和代码本身).
可以防止我假设getClass()返回正确的路径有什么小的差别?
谢谢!
sur*_*ajz 26
它没有在类路径上找到资源.如果您正在使用junit和maven,请确保通过<include>
在<testResource>
section 上添加file directive 来将资源复制到target/test-classes 上
您还可以使用在文件系统中找到类的位置
this.getClass().getResource(".")
Run Code Online (Sandbox Code Playgroud)
并检查资源是否存在
Bri*_*new 21
getResourceAsStream()
正在使用CLASSPATH,因此它将从您的类的任何地方加载,而不是源文件.
我怀疑你需要将XML复制到与.class文件相同的目录.
gum*_*ins 14
如果您使用的是Maven,请将此部分添加到您的 pom.xml
<build>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
</build>
Run Code Online (Sandbox Code Playgroud)
您test.xml
和其他资源文件必须位于src/test/resources
假设test.xml
位于test
根源文件夹的正下方,请执行以下操作: -
InputStream source = this.getClass().getClassLoader().getResourceAsStream("test.xml");
Run Code Online (Sandbox Code Playgroud)
小智 6
尝试使用类加载器
InputStream source = this.getClass().getClassLoader().getResourceAsStream("test.xml");
Run Code Online (Sandbox Code Playgroud)