制作可运行的jar时图像不能导出

时间:2013-07-08 20:55:12

标签: java swing jar embedded-resource system-tray

在我的项目中,我使用系统托盘,当我编译程序时,一切正常,我用于系统托盘的图标显示出来。

图标放在项目文件夹中,与图标相关的代码为

Image icon = Toolkit.getDefaultToolkit().getImage("Icon.png");

trayIcon = new TrayIcon(icon, "Program name", popup);
trayIcon.setImageAutoSize(true);

tray.add(trayIcon);

正如我所说的,一切正常,但当我将项目导出为可运行的jar时,程序将会运行,但图标不会显示,但它只是空白。

2 个答案:

答案 0 :(得分:6)

如果您想从.jar文件中加载资源,请使用getClass().getResource()。这将返回一个具有正确路径的URL。

Image icon = ImageIO.read(getClass().getResource("image´s path"));

答案 1 :(得分:5)

要访问jar中的图像,请使用Class.getResource()

我通常做这样的事情:

InputStream stream = MyClass.class.getResourceAsStream("Icon.png");
if(stream == null) {
   throw new RuntimeException("Icon.png not found.");
}

try {
   return ImageIO.read(stream);
} catch (IOException e) {
   throw new RuntimeException(e);
} finally {
   try {
      stream.close();
   } catch(IOException e) { }
}