没有在Jar中显示的图像

时间:2013-04-04 17:57:51

标签: java eclipse jar packages embedded-resource

我的程序在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)

1 个答案:

答案 0 :(得分:0)

您需要在jar中包含Logo.png,然后使用ClassLoader.getResourceAsStream()

从类路径加载资源

一般模式是:

...
InputStream resource = className.class.getResourceAsStream("/res/Logo.png");
Image image = ImageIO.read(resource);
// do your display stuff here...
...