我似乎无法找到路径和类与 ClassLoader 的正确组合。 这是我的项目的目录结构:
- build/classes/project/MainClass.class
- build/classes/resources/images/an_image.png
- build/classes/resources/ImageLoader.class
ImageLoader 的源码如下:
public class ImageLoader {
public ImageLoader(){...}
public BufferedImage loadImage(String fileName) {
String loc = "resources" + File.separator + "images" + File.separator;
URL imgURL = this.getClass().getResource(loc + fileName);
BufferedImage img = null;
try {
img = ImageIO.read(imgURL);
} catch (IOException e) {...}
return img;
}
}
我不完全确定它和 this.getClass().getClassLoader().getResource()
之间有什么区别,但我已经尝试了各种路径组合,并且我似乎根本无法获取 .jar 来查找和加载资源。
我哪里错了?
谢谢。
最佳答案
不要使用 File.separator
来获取资源,它应该始终是“/”。还可以添加前导“/”以指示可以从类路径结构的“顶部”找到资源(而不是尝试加载它的类的子目录)。
关于Java - .jar 找不到资源(图像、字体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375457/