创建应用程序的 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/