【问题标题】:Image not loading in jar file图像未加载到 jar 文件中
【发布时间】:2021-10-13 22:00:49
【问题描述】:

我正在尝试解决这个问题。尝试不同的解决方案,但没有任何效果。我正在使用 NetBeans IDE。我用这个结构和文件创建了一个项目:

E:\java\project\ecadpb\src\ecadpb

图片文件在

E:\java\project\ecadpb\src\

我在 Netbeans 中为我的项目指定了工作文件夹E:\java\project\ecadpb

我已经创建了这样的图像图标

new ImageIcon("device21.png");

在我的源文件中,它在 Netbeans 中运行项目时运行良好,但是当我单独构建和运行我的 JAR 文件时,图像没有显示。但是图像文件在 JAR 中。

我也尝试过之前提出的相同问题的答案。

URL imageUrl=getClass().getResource("device21.png");
new ImageIcon(imageUrl);

但在我的情况下它不起作用。我是第一次构建 JAR 文件。谁能帮帮我!!

【问题讨论】:

  • 这看起来没问题,你的错误信息是什么?
  • 我不知道问题出在哪里。我将 imageUrl 设为空。我使用 getContextClassLoader 创建了一个 ClassLoader 并使用 getResource 来获取 URL .. 正如 @Bitmap 所建议的那样。现在可以了!

标签: java jar imageicon


【解决方案1】:

执行此操作的一种简单方法是将图像添加到类路径或类路径中的目录中,例如img,如下所示:

E:\java\project\ecadpb\src\main\java\img\device21.png 

然后像这样从这个位置加载你的图像:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource("img/device21.png");
ImageIcon icon = new ImageIcon(resource);

【讨论】:

    【解决方案2】:

    创建一个名为 Images 的源文件夹(即,如果您使用 eclipse,请右键单击您的项目 -> 新建 ->sourceFolder)。随便你怎么称呼它,我叫我的图像。放一些图片。

    现在我有了 JLabels,我给了他们 ImageIcons。看下面的代码。

        ImageIcon BPawn;
        ImageIcon WPawn;
        JLabel Label = new JLabel[8][8] //2D array of labels that gives each spot a position.
        public void setPieces(){
            //set up pawns in their respective positions.
            BPawn = new ImageIcon("Images/BPawn.png", "BPawn");
            WPawn = new ImageIcon("Images/WPawn.png", "WPawn");
        for(int i=0;i<Label[0].length;i++){
            Label[1][i].setIcon(BPawn);
            Label[6][i].setIcon(WPawn);
        }//end for
    
        }//end setPieces.
    

    在 setPieces() 方法中还有很多其他功能,但这一瞥是当您创建可执行 jar 并希望显示图像时如何引用源文件夹中的图像。

    【讨论】:

      【解决方案3】:

      我认为答案可能是这些建议之一here

      【讨论】:

      • No.. 我的问题不是从另一个 jar 文件中获取图像。源和图像在同一个 jar 文件中。但它没有加载图像。
      • @SivaSubramaniam 你试过getResourceAsStream 方法了吗?
      【解决方案4】:

      我用过类似的方法,

      a) 指定图片文件名的包路径。

      b) 确保您的构建脚本没有忽略图像文件,并且它存在于您的 jar 文件中。

      【讨论】:

      • 您尝试使用正斜杠还是反斜杠...您是否检查了 imageicon 上的空对象?
      • 不..我只使用反斜杠..当我在 NetBeans 中运行它时它正在工作..我能找到的另一件事是何时使用 URL imageUrl=getClass().getResource (“E:\\java\\project\\ecadpb\\src\\device21.png”),它返回null..但图像在tat位置..
      • 请试试这个新的 ImageIcon(this.class.getResource("/com/r0ast3d/test/test.png"));将其替换为您当前的班级名称...尽管这无关紧要。
      • r0ast3d - 我试过了 - 得到了“java.lang.NullPointerException”
      猜你喜欢
      • 2013-09-04
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      相关资源
      最近更新 更多