资源图像在构建时不包含在jar中

时间:2014-01-28 15:56:53

标签: java image jar embedded-resource

我目前正在使用以下代码段来获取界面的图像。

ImageIcon img = new ImageIcon("./lib/logo.gif");

JLabel lblNewLabel = new JLabel("");
lblNewLabel.setIcon(img);
lblNewLabel.setBounds(28, 65, 140, 100);

但是,当我执行clean和build时,执行jar文件时不会出现图像。什么似乎是问题,我应该把图像文件放在哪里?提前谢谢。

2 个答案:

答案 0 :(得分:1)

在您提供的代码段中,图像文件的路径被认为是在文件系统上(类ImageIcon的构造函数将文件名作为参数)。如果要从jar本身加载文件(或图像),则需要使用ClassLoader.getResourceAsStream()。查看this问题。

答案 1 :(得分:1)

  

“然而,当我执行clean和build时,当我执行jar文件时,图像不会出现。看起来是什么问题,我应该把图像文件放在哪里?”

这是从文件加载的原因。您希望使用网址

从类路径中将其embedded resources加载

在开发过程中,您的图片应位于src中的某个包中。在构建时,IDE会将您的图像复制到类路径中,并将其添加到jar

enter image description here

然后从代码中的类路径加载。

Class.getResource(..)会返回一个网址,因此您要执行此操作

ImageIcon icon = new ImageIcon(MyClass.class.getResource("/images/logo.gif"));