java - 运行 JAR 时图像不显示

标签 java image jar embedded-resource

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

项目结构:

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

在项目属性中,我默认添加了 src - 源包文件夹。尝试将图像直接放入项目文件夹并删除/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 中一切正常。全力工作。但是在built&clean之后我看不到任何图像,但所有操作都已完成。

您能否提出问题所在?因为这个而生气((((

最佳答案

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

两种解决方案:

  • 使用URL:ImageIO.read(getClass().getResource("whatever"))

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

至少重复 #2-4 个自动建议的相关问题:

关于java - 运行 JAR 时图像不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31654243/

相关文章:

java - 有启动远程 JVM 的替代方法吗?

java - Eclipse 消耗大约 85% 的 CPU 和 3 GB RAM : very slow performance

html - 无法显示替换图标

image - 无法使用 VueJS 将文件传递给 Laravel Controller

r - ggplot2 Shiny ,更改然后重新加载图像/绘图而不完全重新创建它

java - 升级没有 .proto 的 protobuf jar 的命名空间

java - 使用 Java 8 中的特性,转换列表中所有值的最简洁方法是什么?

Java JAR : Writing to a file

python - 像 pyspark 的 jar 一样打包

java - 小程序中的 start() 方法删除面板