运行JAR时图像不显示

时间:2015-07-27 13:21:02

标签: java image jar embedded-resource

我已经花了5个小时,并且在运行Jar时不知道为什么没有加载图像。

项目结构:

Blackjack_Game
 - Source Packages
   - Images
   - blackjack
        .... classes...

在项目属性中,我有src - 默认情况下添加的Source Packages文件夹。试图将图像直接放入项目的文件夹并删除/ Images /,但仍然没有帮助。

在我的代码中:

dealer_url = getClass().getResource("/Images/4_of_hearts.jpg");
File img = new File(dealerCardGenerator.dealer_url.getPath());
BufferedImage bufferedImage = ImageIO.read(img);
dealerCardGenerator.imageIcon = new ImageIcon(bufferedImage);

因此,在NetBeans IDE中,一切正常。完全工作。但是在内置和清洁后,我看不到任何图像,但所有操作都已完成。

你能告诉我哪里出错了吗?因此而变得如此疯狂(((

2 个答案:

答案 0 :(得分:1)

jar条目不是文件。 java.io.File只能识别文件,而不能识别jar条目。 java.net.URL但是可以使用jar:方案使用file:方案识别jar条目。这就是Class.getResource()返回URL而不是File的原因。

两种解决方案:

  • 使用URLImageIO.read(getClass().getResource("whatever"))

  • ImageIO也可以使用已打开的流,类加载器可以提供: ImageIO.read(getClass().getResourceAsStream("whatever"))

至少重复#2-4自相关的问题:

答案 1 :(得分:0)

谢谢大家澄清问题。我已经意识到为什么有些功能不能正常工作。

所以解决方案是用ImageIcon替换URL:

ImageIcon i2 = new javax.swing.ImageIcon(getClass().getResource("whatever"));

然后只需将图标设置为标签图标:

jLabel1.setIcon(i2);

这样JAR就可以了。以前,此图标设置操作后的所有方法都不起作用,因为程序实际上已停止,现在一切正常。