0

我的程序在 Eclipse 中完美运行,但是当我导出它时,图像不显示。

我的设置看起来像

src
..gui
....Main.java
....menus
......MenuMain.java
res
...Logo.png

我从 MenuMain.java 引用 Logo.png,我尝试了很多方法;

  • res/Logo.png
  • /res/Logo.png
  • .res/Logo.png
  • ../../Logo.png
  • ++++

前 3 个在 Eclipse 中工作,但在 Jar 中均不工作。我检查了 Jar 文件,res 文件夹在那里,所有的图像也在那里。我还尝试编辑 MANIFEST.MF 并添加了 Class-Path:

但它仍然不起作用。运行 Jar 时我没有收到任何错误,其他所有内容都显示文件(按钮、标签、++)

编辑:我使用这是带有 GridBagLayout 的 JPanel,我将 ImageIcon 添加到 JLabel 以便能够将其添加到 JPanel。最初我使用了类似的东西:

JLabel logo = new JLabel(new ImageIcon("res/Logo.png")); 

但我也尝试了其他变体,例如:

JLabel logo = new JLabel(new ImageIcon(MenuMain.class.getClassLoader().getResource("/res/Logo.png")));

并且还通过getResourceAsStream()

只有第一个在 Eclipse 中有效,但没有出现在 Jar 中。其他人只是崩溃(NullPointer)

4

1 回答 1

0

您需要在 jar 中包含 Logo.png,并使用从类路径加载资源ClassLoader.getResourceAsStream()

一般模式是:

...
InputStream resource = className.class.getResourceAsStream("/res/Logo.png");
Image image = ImageIO.read(resource);
// do your display stuff here...
...
于 2013-04-04T17:59:59.747 回答