有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java映像在一个环境中不起作用。jar文件

创建应用程序的JAR时,应用程序中的图像不再显示。我们加载图像的代码示例如下:

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

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

有什么想法吗

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


共 (3) 个答案

  1. # 1 楼答案

    您应该从类路径加载资源,如下所示:

     InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("Cards/hidden.png")
    

    当然,这假设在创建JAR时,实际上是将图像文件放入其中

    还有一个getting the resource as a URL的方法

  2. # 2 楼答案

    问题:jar中是否存在src文件夹

    提示:您可以打开。jar与任何支持ZIP以查看其内容的解包程序

    回答:引用资源的方式不正确,您应该改为执行类似getClass().getClassLoader().getResource("Cards/hidden.png")的操作

  3. # 3 楼答案

    检查您正在调用的constructor的API。您传入的字符串是一个文件路径——当资源打包在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);
    

    当然,需要更多的异常和边缘案例处理,但这就是它的要点