Java - .jar文件无法找到资源(图片、字体)

3

我似乎找不到正确的路径和类与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() 和它之间的区别是什么,但我已经尝试了各种路径组合,似乎无法找到并加载资源文件。

我做错了什么?

谢谢。

1个回答

6
不要使用File.separator来获取资源,应始终使用'/'。最好还要添加一个前导'/',以指示该资源可以从类路径结构的“顶部”找到(而不是尝试加载它的类的子目录)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接