java - 图像在 .jar 文件中不起作用

标签 java image swing jar

创建应用程序的 JAR 后,应用程序中的图像不再出现。我们加载图像的代码示例是:

ImageIcon placeHolder = new ImageIcon("src\\Cards\\hidden.png");

我们不知道为什么会发生这种情况。如果我们不将应用程序压缩为 JAR,应用程序将按预期运行;作为 JAR,图像就会消失。我们还尝试使用 URL 而不是 ImageIcons,但这只会导致程序根本无法运行。

有什么想法吗?

编辑:我们将图像文件放入 JAR 文件中的正确路径中,所以这不是问题。

最佳答案

检查 API 中的 constructor你打电话来。您传入的字符串是一个文件路径 - 当资源打包在 JAR 中时,文件系统上不存在包含该图像的文件,因此您不能再使用此构造函数。

相反,您需要使用类加载器从流中加载资源,并将它们拉入字节数组:

byte[] buffer = new byte[IMAGE_MAX_SIZE];
InputStream imageStream = getClassLoader().getResourceAsStream("src\Cards\hidden.png");
imageStream.read(buffer, 0, IMAGE_MAX_SIZE);
ImageIcon placeHolder = new ImageIcon(buffer);

当然,需要更多的异常和边缘情况处理,但这就是要点。

关于java - 图像在 .jar 文件中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662686/

相关文章:

javascript - 使图像适合屏幕并允许默认缩放行为

javascript - 我的图像未在 ReactJS 中显示

java - 如何使用 swing 制作类似调色板的菜单?

Java 计时器 Swing 精确到 60 fps

java - struts2 中用户友好的 URL

java - 将 JSON 映射到 Java 对象的正确方法

Java在每一行中搜索字符串关键字

java - Spring 启动 : Prevent persisting field declared in superclass

php - 我可以将 html 表格制作成图像以嵌入到 pdf 中吗

java - JscrollPane 在将其添加到另一个扩展到 JPanel 的类后消失