当前位置: 首页 > 知识库问答 >
问题:

setIconImage仅在eclipse中工作,在导出为可运行jar文件时不工作

哈涵容
2023-03-14

我已经寻找了一段时间来解决这个问题。我的工作区中有一个项目文件夹(该文件夹基本上是我的根目录),其中有一个名为icon的文件。gif。在我的项目中,我有以下几点:

package com.mgflow58.Main;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class Game {

    public static void main(String[] args) {
        JFrame window = new JFrame("Guppy's Adventure");
        window.add(new GamePanel());
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setResizable(false);
        window.pack();
        window.setLocationRelativeTo(null);
        window.setVisible(true);
        window.setIconImage(new ImageIcon("icon.gif").getImage());
    }

}

当我运行图标时,它在eclipse中运行良好,但导出的jar文件并不像在eclipse中那样显示图标。知道为什么吗?我想弄明白这件事快疯了。

共有1个答案

常枫涟
2023-03-14

jar文件包含其适当文件夹中所需的所有图像文件。

问题是ImageIcon(String)正在磁盘上查找JavaDocs描述的命名文件。。。

公共图像图标(字符串文件名)从指定文件创建图像图标。图像将通过使用MediaTracker预加载,以监控图像的加载状态。指定的字符串可以是文件名或文件路径。指定路径时,请使用Internet标准正斜杠(“/”)作为分隔符。(字符串被转换为URL,因此正斜杠适用于所有系统。)例如,指定:

新的ImageIcon("图像/myImage.gif")

参数:
filename-指定文件名或路径的字符串

这些资源不再驻留在磁盘上,但不会嵌入Jar文件中,因此无法再使用基于文件的方法访问它们。

相反,您需要使用类似于类#getResource的东西,例如。。。

window.setIconImage(new ImageIcon(Game.class.getResource("icon.gif")).getImage());

说到这里,我还建议使用ImageIO而不是ImageIcon,原因有很多,但主要是因为如果由于某种原因无法加载资源,它实际上会引发异常,而不是无声地失败。。。

查看阅读/加载图像以了解更多详细信息

 类似资料:
  • 我在1-2年前用libGDX做了一个游戏,我可以在eclipse上运行它,它很有效。当我想导出jar文件时,我转到Export-Runnable jar file-这里我选择package required libraries并导出它。

  • 我在将java文件导出到可运行的jar文件时遇到了问题。在eclipse中,它工作得很好,但是当我导出它时,它就不工作了。 我已经尝试过(java-jar myjar.jar)获取日志,但它说“无法访问jar文件” 因为当我将它放在注释中时,当我导出时,它运行,但没有映像。 我也尝试过这样的方法:,但它也不起作用。我做错了什么?如何导出JLabel上带有图像的可运行jar文件? (这是我的JLab

  • 我正试图将eclipse中的java项目导出为可运行的jar,但由于某种原因,可运行的jar无法工作。如果双击可执行jar,它什么也不做。我尝试将所需库提取并打包到生成的JAR中。 所以我也尝试导出一些更简单的项目,那些工作很好。最大的区别是我的真实项目有文件:图像和xml文件。 在代码中引用它们,如下所示:

  • 这是一个试用应用程序,没有什么大的,它有119行代码。我只是在摆弄java fx,试图创建一个可运行的GUI java应用程序。因此,在eclipse中,右键单击我的项目 null 在我尝试了所有这些之后,我仍然得到了错误。有人知道为什么吗?你能帮忙吗?

  • 问题内容: 我在将当前项目提取到可执行jar文件时遇到问题。当我在日食中按下运行按钮时,一切正常,但是当我这样做时 然后启动.jar文件;我唯一得到的是带有灰色画布的窗口。它应该启动我编写的游戏(spaceInvaders)。 这是我上载项目的github的链接。我真的不知道错误在哪里,在哪里看。在我的代码中?在我安装的JRE / JDK中?创建罐子时我做错什么了吗? 请帮忙 -。- 问题答案:

  • 我正在尝试将我的程序导出为一个可运行的JAR。该程序在eclipse中工作得非常好,但它不能作为一个可运行的JAR运行。我正在使用另外3个jar文件作为引用jar,这样我就可以使用音频,我认为这可能是问题所在。可运行的jar启动,但它只是一个全白的窗口,程序没有启动。 我点击我的项目,然后右键点击并选择“导出”,然后我选择“可运行的JAR”选项。我尝试使用所有三个处理引用库的选项来创建jar。 将