我已经花了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中,一切正常。完全工作。但是在内置和清洁后,我看不到任何图像,但所有操作都已完成。
你能告诉我哪里出错了吗?因此而变得如此疯狂((((p
答案 0 :(得分:1)
jar条目不是文件。 java.io.File
只能识别文件,而不能识别jar条目。 java.net.URL
但是可以使用jar:
方案或使用file:
方案识别jar条目。这就是Class.getResource()
返回URL
而不是File
的原因。
两种解决方案:
使用URL
:ImageIO.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就可以了。以前,此图标设置操作后的所有方法都不起作用,因为程序实际上已停止,现在一切正常。