在jar文件中导出资源

时间:2015-12-24 16:31:50

标签: java eclipse background resources

我有一个问题是将我的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));

3 个答案:

答案 0 :(得分:0)

喜欢

BufferedImage bufferedImage = ImageIO.read(MyClass.class.getResource("/images/cccc.jpg"));

请参阅:Loading image from a resource Can't read input file

答案 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文件时,所有内容都已正确加载。

Link to the picture of the problem solved