图像不显示在JAR文件中,但显示在Eclipse上运行

时间:2015-11-09 00:57:43

标签: java eclipse image jar

我看到other StackOverflow users出现此错误。但是,当我尝试第一个人所做的事情时(使用getClass().getClassLoader().getResource(myPath),即URL),它在Eclipse IDE运行和JAR文件中都不起作用。我无法理解here上的其中一个答案,但我理解这一点:

  

getImage调用正在查看文件系统工作目录,而不是在Jar文件中。这就是当jar文件放在jar文件外部的同一目录中时,jar文件成功加载图像的原因。如果图像捆绑在jar文件中,则它们不再是要访问的文件系统文件,而是Jar文件资源。有一种不同的方法来加载这些,但很抱歉,我不知道它在我的头顶

在此之前,我认为图像文件(其相对路径为/images/folder.jpg未包含在JAR文件中。我提取它并找不到图像。)为了解决这个问题,我加入了构建路径中的images文件夹(Project > Properties > Java build path > Source)。在这样做之后,我再次提取JAR文件,并注意图片在那里,但不在图像文件夹中。

这是我在Java代码方面尝试过的:

//this.selectDirector = new JButton(new ImageIcon(getClass().getClassLoader().getResource("images/folder.jpg")));
this.selectDirectory = new JButton(new ImageIcon("images/folder.jpg"));

是否有答案(或者说要做的事情应该做什么)? 更新:

我将images文件夹移到了bin文件夹中,并将其从构建路径中删除(因此只有src文件夹位于构建路径上)。为了更好地衡量,我还将其放在src文件夹中。我将我的两行代码更新为:

this.selectDirector = new JButton(new ImageIcon(getClass().getClassLoader().getResource("images/folder.jpg")));
//this.selectDirectory = new JButton(new ImageIcon("src/images/folder.jpg"));

现在,它可以在Eclipse中运行,但仍然无法使用JAR文件(它正在抛出NullPointerException)。

1 个答案:

答案 0 :(得分:0)

我无法弄清楚如何保证Eclipse将images文件夹与其中的folder.jpg一起发送到其他代码中,即使我将其放入src和{{ 1}}文件夹。尽管如此,我仍然能够解决问题

我最终做了什么

我记得JAR文件是什么:Java生成的压缩文件(类似于RAR文件或ZIP文件)。知道了,我用WinRAR打开了生成的JAR文件,转到项目目录,并将bin文件夹拖到WinRAR实例中。 WinRAR将images文件夹放在JAR文件中!然后我将我的Java代码(使用images)更改为:folder.jpg

缺点

缺点是我必须保持this.selectDirectory = new JButton(new ImageIcon(getClass().getClassLoader().getResource("images/folder.jpg")));文件夹浮动,以便在Eclipse的每次新导出时运行WinRAR并复制images。必须存在更好的方法,但我现在会接受这个......

相关问题