导出jar文件中的资源

问题描述 投票:0回答:4

我有一个问题,就是要把我的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));
java eclipse background resources
4个回答
0
投票

喜欢

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

请看 从资源中加载图像,无法读取输入文件。


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" )

另外,ImageIO.read也可以使用InputStream作为参数。


0
投票

我解决了这个问题。现在,当我打开jar文件时,所有的东西都能正确加载。

问题解决后的图片链接

© www.soinside.com 2019 - 2024. All rights reserved.