我创建了一个java应用程序,并将所有类捆绑在一个jar文件中。当我从eclipse运行项目时,我的应用程序运行成功。但是当我尝试运行我的.jar
文件时,我没有得到我的应用程序使用的图标。在代码中,我从项目文件夹中的images目录中获取了我的图标。如何在使用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 :(得分:11)
您需要从类路径而不是从本地磁盘文件系统获取它。
假设images
实际上是一个包,并且该包与当前类在同一个JAR中,那么这样做:
final public ImageIcon iReport =
new ImageIcon(getClass().getResource("/images/Report.png"));
答案 1 :(得分:2)
jar文件中的文件被视为“资源”。您需要将它们作为类路径资源访问,常规的文件访问方法在那里不起作用。
试试这个:
final public ImageIcon iReport = (new ImageIcon(getClass().getResource("images/Report.png")));
答案 2 :(得分:1)
我知道很久以前就问过这个问题,但是对于像我这样同样问题的人来说,这可能会有所帮助。我已经在使用getClass()。getResource(“...”),但资源没有使用.jar文件导出。 我通过刷新'Resources'文件夹及其每个子文件夹解决了这个问题。
答案 3 :(得分:1)
100%有效
final public ImageIcon iReport = new ImageIcon(getClass().getResource("/Report.png"));
请勿忘记path
处的图片“/”。