使用JAR文件中的图像

时间:2013-02-12 22:18:26

标签: java jar embedded-resource

我似乎无法做到这一点......

我在Eclipse中有一个名为MyProject的Java项目。在它的根目录是文件夹bin,src和resources。在资源内部,我有一个名为myImage.gif的图像。

在我的代码中,我想使用这个图像,我想让它工作,无论这是从Jar文件运行。我目前正在这样做

ImageIcon j = new ImageIcon(getClass().getResource("/resources/myImage.gif"));

但是当我通过Eclipse(而不是Jar)运行它时,它会吐出一个null。

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

如果您要告诉Eclipse将resources视为源文件夹,那么您应该可以说

ImageIcon j = new ImageIcon(getClass().getResource("/myImage.gif"));

当您构建JAR时,您必须确保resources目录的内容进入JAR文件的顶层,以便在JAR情况下使用相同的路径,即

META-INF
  MANIFEST.MF
com
  example
    MyClass.class
myImage.gif

或者,可能是更常见的Java习惯用法,将图像文件放在与.java文件相同的目录中(在这种情况下为src/com/example),然后使用getResource而不带领先斜线

new ImageIcon(getClass().getResource("myImage.gif"));

Class.getResource解析了相对于相关类的包的相对路径。同样,当您构建JAR时,您需要在JAR中使用相同的结构,这次myImage.gif下的com/example。{/ p>

答案 1 :(得分:0)

将资源放入src ,Eclipse会将其复制到bin。

ImageIcon ii =
   new ImageIcon(
      ImageIO.read(
         getClass().getClassLoader().getResourceAsStream(
            "resources/myImage.gif" )));

没有/在路径之前。

相关问题