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