1

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

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

在我的代码中,我想使用这个图像,并且无论它是否从 Jar 文件运行,我都希望它能够工作。我目前正在这样做

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

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

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

4

2 回答 2

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 习惯用法,将图像文件放在与文件相同的目录中.javasrc/com/example在这种情况下),然后在getResource没有前导斜杠的情况下使用

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

Class.getResource针对相关类的包解析类似的相对路径。同样,当您开始构建它时,您需要在 JAR 中具有相同的结构,这次使用myImage.gifunder com/example

于 2013-02-12T22:37:13.527 回答
0

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

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

没有 / 在路径之前。

于 2013-02-12T22:31:49.240 回答