我有一个问题是将我的Jframe应用程序与后台资源导出到jar文件中(没有任何外部资源文件夹。我更喜欢把所有内容都放到jar文件中以获得更好的可移植性)。 这是代码。在Eclipse上所有工作正常,但是当我导出到jar文件时,应用程序无法加载,因为找不到资源“cccc.jpg”。 我已经尝试了getResource()但它也没有用。
// Load Background image
BufferedImage img = null;
try {
img = ImageIO.read(new File("cccc.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
// Set Background image
Image dimg = img.getScaledInstance(640, 480, Image.SCALE_SMOOTH);
ImageIcon imageIcon = new ImageIcon(dimg);
setContentPane(new JLabel(imageIcon));
答案 0 :(得分:0)
喜欢
BufferedImage bufferedImage = ImageIO.read(MyClass.class.getResource("/images/cccc.jpg"));
答案 1 :(得分:0)
说你的代码在ecplise中工作是一个提示,你已经在项目文件夹的根目录中找到了“cccc.jpg”文件(这是你在eclipse中运行应用程序或单元测试时的当前文件夹)。
将文件作为资源打包到jar中:只需将其放入源文件夹即可。如果您的源包名为“my.app.main”,则可以将图像文件直接放在“my”文件夹旁边,然后按以下方式加载:
InputStream is = ClassLoader.getSystemResourceAsStream( "cccc.jpg" )
或将其放入子包(例如“my.app.images”)并按以下方式加载:
InputStream is = ClassLoader.getSystemResourceAsStream( "my/app/images/cccc.jpg" )
BTW:ImageIO.read也可以将InputStream作为参数。
答案 2 :(得分:0)
我解决了这个问题。现在,当我打开jar文件时,所有内容都已正确加载。