Java 在jar文件中显示图像

Java 在jar文件中显示图像,java,eclipse,jar,resources,Java,Eclipse,Jar,Resources,我知道以前有人问过这个问题,但我已经把我能找到的所有解决方案都检查了一遍,没有一个对我有用。我在Eclipse中有一个程序,我正试图将它导出到一个可执行的jar文件中。这是我第一次这样做。当我执行jar时,我的程序图像不会显示。所以我做了一些研究,发现我需要将它们作为资源加载,但我似乎无法使其工作 下面是我用来加载没有jar的图像的代码: private void initComponents() { // create an enterprise icon and make it i

我知道以前有人问过这个问题,但我已经把我能找到的所有解决方案都检查了一遍,没有一个对我有用。我在Eclipse中有一个程序,我正试图将它导出到一个可执行的jar文件中。这是我第一次这样做。当我执行jar时,我的程序图像不会显示。所以我做了一些研究,发现我需要将它们作为资源加载,但我似乎无法使其工作

下面是我用来加载没有jar的图像的代码:

private void initComponents()
{

    // create an enterprise icon and make it invisible
    enterpriseIcon = new JLabel(new ImageIcon("res/enterprise1.png"));
    enterpriseIcon.setVisible(false);
}
我将所有图像都放在根项目目录中名为res的文件夹中,我告诉Eclipse将此文件夹放在构建路径中

当运行jar文件时图像无法显示时,我尝试了以下方法:

enterpriseIcon = new JLabel(new ImageIcon(getClass().getResource("/res/enterprise1.png")));

然而,当其中任何一个在Eclipse中运行时,我会得到一个空指针异常。(我还尝试了其他一些方法,但以上是我认为我理解的唯一解决方案。)

如果您能帮助实现此功能,我们将不胜感激。

使用
Class\getResource
获取jar文件中的图像URL

enterpriseIcon = new JLabel(new ImageIcon(getClass().getResource("/res/enterprise1.png")));

试试这个。这对我很有效:)


直到昨天,我还面临着同样的问题。我有办法解决这个问题。让我和你分享

  • 在Eclipse中,转到项目名称
  • 正确的项目名称
  • 新建->源文件/文件夹
  • 将此源文件/文件夹命名为图像
  • 现在,在本地计算机上转到Eclipse工作区,您的项目将在该工作区中运行 他亲自在场
  • 将所有图像复制到新创建的 “图像”文件夹仅在此处
  • 现在回到Eclipse
  • 右键单击项目->刷新
  • 现在,无论您在哪里使用.java文件中的图像,请转到这些行,并在图像位置前面加上图像前缀/
示例:XXX XXX=XXXX(Example.jpg) 换成。。。。XXX XXX=XXXX(图像/示例.jpg)

轰!! 运行.jar文件时将显示这些图像

注意:不要使用java-jarappname.jar从cmd运行.jar文件 相反,只要双击.jar文件,您就会看到图像


如果对您有效,请投票:

请尝试使用getClass().getResource(“/res/enterprise1.png”),很抱歉,我没有使用它,但这实际上是我第一次尝试的。我更正了我的帖子,把它包括进去。你试过路径“rez/enterprise1.png”吗?您确定I age存在于jar中并且路径正确吗?看起来带图像的/res文件夹不在jar中。我确实告诉Eclipse将此文件夹用作源文件夹。我如何让它放在罐子里?我有类似的问题,最终用
getresourceastream
而不是
getResource
解决了它。对不起,我也试过了。这应该是我文章中第一个失败代码的例子,但我复制并粘贴了错误的东西。无论如何,它给了我同样的空指针异常。我将更正我的帖子。@user2765703验证图像是否在jar中。如果在指定的路径上找不到任何内容,该方法将返回
null
。你可以尝试一些变化,比如删除前面的
/
,但我认为这不应该奏效。我发现,如果我将图像放在主项目的/bin文件夹中,并将代码更改为enterpriseecon=new JLabel(new-ImageIcon(getClass().getResource(“enterprise1.png”);但是,如果可能的话,我希望能够使用我的/res文件夹。我确实告诉Eclipse将其放在构建路径上。我还缺什么吗?试试这个。实际上,如果您已将
res
文件夹声明为源文件夹,那么您应该可以只说
enterprise1.png
或其他内容。
enterpriseIcon = new JLabel(new ImageIcon(getClass().getResource("/res/enterprise1.png")));
private void initComponents() {
    try {
        BufferedImage icon = ImageIO.read(getClass().getResource("/enterprise1.png"));
        frame.setIconImage(icon);
    } catch (IOException e) {
        e.printStackTrace();
    }
}