【发布时间】:2016-07-16 03:30:42
【问题描述】:
我已经在 Stack Overflow 上探索了与此问题相关的每一个解决方案,我遇到的解决方案仅在我的 IDE (Eclipse Mars) 中有效,但在导出时都失败了。
我有一个图像文件,我只想从导出的 jar 中加载。
从项目布局中可以看出,Images 是项目文件夹 CooldownTrackerJava 内的一个文件夹。为了参考它,我尝试了多种方法。
//My class' name is AddItemDialog
//Method 1
String filePath = File.separator + "Images" + File.separator + "questionMark.png";
InputStream inputStream = AddItemDialog.class.getResourceAsStream(filePath);
BufferedImage img = ImageIO.read(inputStream);
我尝试了几种方式方法 1。我在文件路径的开头尝试了使用和不使用File.separator。 我知道前者指的是绝对路径,而后者是相对路径。我还尝试将 Images 文件夹移动到我的类文件所在的目录中。
在导出和多次测试时,所有这些都失败给我NullPointerException。
//Method 2
String saveLocation = File.separator + "Images" + File.separator + "questionMark.png";
Image img = Toolkit.getDefaultToolkit().getImage(getClass().getResource(saveLocation));
As per this post上面的方法我试过了还是不行。
除了本文中提到的之外,我尝试了许多变体,但是当我导出 jar 时,它们都没有成功。
我需要将 Images 文件夹添加到我的构建路径吗?我应该把它移到src 文件夹吗?我错过了一个明显的步骤吗?所有建议将不胜感激。这里也是导出的 jar 文件的布局。
【问题讨论】:
-
-
不要使用
File.separator()。类路径上资源路径的分隔符始终为/。因此,如果您使用 Windows,您总是会得到错误的结果。 -
@Matthew 现在正在尝试。
-
@fge 哦,我不知道。这可能是解决问题的关键。我正在使用 Windows。
-
好吧,终于它终于可以工作了:D 我将我的 Images 文件夹移到了 src 文件夹中,我删除了 File.separator() 并用 / 替换了它
标签: java eclipse jar export absolute-path