我正在尝试这个简单的测试:
@Test
public void testResourceExist() {
URL file = getClass().getResource("sample.htm");
Assert.assertNotNull(file);
}
我的目录结构是:
src
- main
- java
- resources
- test
- java
ResourcesTest.java
- resources
sample.htm
我使用IntelliJ Idea和maven,甚至Ide自动完成sample.htm文件。如果我检查test-classes文件夹,我可以看到sample.htm文件。
我只需要在资源名前加一个斜杠。
"/sample.htm"代替"sample.htm"和它的工作
实际上,您不应该将其视为文件资源,而应该将其视为类路径资源。resources
中的所有文件都打包为jar的一部分,而不是直接放在文件系统中,并且所有的类路径都是绝对的,因此您不需要在开始时使用斜杠。相反,您在这里遇到的错误是,您试图使用getResource()
读取文件资源,而不是使用getClasspathResourceAsStream()
或类似的类路径资源。如果使用后者,则不需要斜杠。