Java - .jar 找不到资源(图像、字体)

标签 java jar embedded-resource

我似乎无法找到路径和类与 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/

相关文章:

java - 在 Java 中序列化选择性类变量

java - JRE-9 deprecate browser plug-in - web start (JNLP) 可以直接在 JRE-9 中运行吗?

java - 对服务进行单元测试有意义吗?

java - 包含带有可执行 jar 的图像

android - 将大文本文件添加到 Assets 文件夹

java - 在更新删除和插入时将电话簿联系人与我的应用程序同步的最佳方式

java - 替换类路径中的 jar 后出现 ClassNotFoundException

java - 运行 JAR 文件是否需要 JRE 和 JDK?

c - 与外部 SPI 闪存通信时是否应该禁用中断?

java - JToolBar - JButton - 图像未显示