2011-06-16 119 views
8

我制作了一个Java应用程序,并将所有类都捆绑在一个jar文件中。当我从eclipse运行项目时,我的应用程序运行成功。但是,当我尝试运行我的.jar文件时,我没有收到我的应用程序使用的图标。在代码中,我从图像目录中获取项目文件夹中的图标。如何在使用jar时将这些图像文件呈现给最终用户?如何使用eclipse在jar文件中包含所有图像

我加载像这样的形象:

final public ImageIcon iReport=new ImageIcon("images/Report.png"); 

我也曾尝试

final public ImageIcon iquit=new ImageIcon(getClass().getResource("images/quit.png")); 

final public ImageIcon iquit=new ImageIcon(getClass().getResource("/images/quit.png")); 

但是这将导致一个错误:

Exception in thread "main" java.lang.NullPointerException 
at javax.swing.ImageIcon.<init>(Unknown Source) 
+0

告诉我们一些代码?如何加载它有时可用,但不是其他人? – 2011-06-16 13:55:33

+0

您应该查看您如何访问代码中的图像资源。确保它在jar文件中可以访问相对URL! – gotomanners 2011-06-16 13:55:55

+0

你可能看看class.getResourceAsStream() – McPepper 2011-06-16 14:04:47

回答

11

您需要从类路径而不是从本地磁盘文件系统中获取它。

假设images实际上是一个包,这个包是同一个JAR与当前类里面,那么这样做:

final public ImageIcon iReport = 
    new ImageIcon(getClass().getResource("/images/Report.png")); 
+0

我已经完成了alreadt,但它不起作用 – sanu 2011-06-16 14:17:54

+1

然后路径显然是错误的。你知道什么时候需要使用前导斜杠'/'吗?你知道相对路径是如何工作的吗? – BalusC 2011-06-16 14:19:45

+0

好的谢谢,我明白了....但现在我得到了不同的问题,它使用Eclipse的一切正常工作,但没有工作后制作jar ....实际上jar文件没有运行。 – sanu 2011-06-16 17:44:51

2

在jar文件中的文件被视为“资源”。您需要将它们作为类路径资源进行访问,常规的文件访问方法在此不起作用。

试试这个:

final public ImageIcon iReport = (new ImageIcon(getClass().getResource("images/Report.png"))); 
1

我知道这是很久以前问过,但它可能会帮助其他有同样问题,跟我一样。我已经使用getClass()。getResource(“...”),但资源没有用.jar文件导出。 我通过刷新'Resources'文件夹及其每个子文件夹来解决问题。

+0

我希望这[回答](http://stackoverflow.com/a/ 9278270/1057230)肯定会帮助你:-)更多信息可以在这里找到[answer](http://stackoverflow.com/a/9866659/1057230) – 2013-07-14 16:40:15

+0

谢谢你这么多。 – 2013-12-16 04:40:32

1

100%的工作

final public ImageIcon iReport = new ImageIcon(getClass().getResource("/Report.png")); 

不要忘记 “/” 在path图像。

相关问题