无法从资源测试文件夹加载资源



我正在尝试这个简单的测试:

@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()或类似的类路径资源。如果使用后者,则不需要斜杠。

最新更新