Java getResources()在移动到包中时停止工作
当我的测试类位于默认包中时,下面的测试方法通过,当我将其移动到包中时,测试方法失败 目录结构如下所示:Java getResources()在移动到包中时停止工作,java,file-io,getresource,Java,File Io,Getresource,当我的测试类位于默认包中时,下面的测试方法通过,当我将其移动到包中时,测试方法失败 目录结构如下所示: src/ main/ java/ some.package/ resources/ test/ FooTest.java // works here some.package/ FooTest.java // does not work here 实际上,您的路径是相对于调用类的。改为使用/someImage.png。ge
src/
main/
java/
some.package/
resources/
test/
FooTest.java // works here
some.package/
FooTest.java // does not work here
实际上,您的路径是相对于调用类的。改为使用
/someImage.png
。getClass()。getResource()使用类加载器加载资源。这意味着资源必须位于要加载的类路径中。如果类路径中缺少资源,为什么它可以在一个位置工作,而不能在另一个位置工作?这难道不应该吗?相关的问题完全不相关。它使用ClassLoader#getResource并解决了一个不同的问题。宾果!我尝试填写'src/../someImage.png',但没有尝试只使用'/'
public class FooTest {
@Test
public void TestLoadImageFromFile() {
BufferedImage loadedImage = null;
try {
loadedImage = ImageIO.read(this.getClass().getResource("someImage.png"));
} catch(IOException e) {
e.printStackTrace();
}
assertNotNull(loadedImage);
}
...