我遇到运行可运行jar文件的问题,该文件中包含图像图标。
代码很好地运行在eclipse上,并在JFrame
中显示图标。我添加它的方法是将其添加到JLabel
,然后将JLabel
添加到JFrame
。我将项目导出到一个可运行的Jar文件中,当我双击jar时。它没有运行。
我测试了只是在JLabel
上添加了一个普通的JFrame
而没有图标代码,当我导出并运行它时它就能正常工作。
每当我将以下代码添加到代码中时,它就会混淆可运行的Jar文件。
JLabel s1 = new JLabel(new ImageIcon(getClass().getResource("/Images/Pattern1.png")));
我注意到它获取资源时可能会出错。 My Image Pattern1存储在名为Images的文件夹中,该文件夹位于我的项目src文件夹中。 所以当我导出它时,我确信它在runnable jar文件中。
这是我的代码
package main;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MyFrame extends JFrame {
public MyFrame() {
JLabel s1 = new JLabel(new ImageIcon(getClass().getResource("/Images/Pattern1.png")));
this.add(s1);
//JLabel test = new JLabel("Test");
//this.add(test);
}
public static void main(String[] args) {
MyFrame f = new MyFrame();
f.pack();
f.setVisible(true);
}
}
这就是我项目中的文件。
由于
答案 0 :(得分:2)
特别是在Windows上,Java可以在文件名中使用大小写。在Eclipse中运行时,可能直接从文件系统中拾取Pattern1.PNG
。
然而,一旦嵌入Jar中,案例匹配就变得完全。这是因为资源只是添加到zip文件中,而Java使用Zip Entry信息来查找内容。
确保命名是完全正确的以避免问题。请尝试使用/Images/Pattern1.PNG
代替/Images/Pattern1.png