【问题标题】:Unable to locate/open image inside exported jar无法在导出的 jar 中找到/打开图像
【发布时间】: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


【解决方案1】:

解决方案分为两部分。首先,我将Images 文件夹移动到src 目录中,如下所示。感谢马修。

然后我删除了File.separator 并用正斜杠/ 替换它。感谢 fge。

不要使用 File.separator()。类路径上资源路径的分隔符始终为 /。因此,如果您使用 Windows,您总是会得到错误的结果。

我使用了方法 1 的变体来测试它。不过这两种方法都可以。

String saveLocation = "/Images/questionMark.png";
InputStream inputStream = this.getClass().getResourceAsStream(saveLocation);
try {
    BufferedImage img = ImageIO.read(inputStream);
} catch (IOException e) {
    e.printStackTrace();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 2017-09-30
    • 2019-02-03
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    相关资源
    最近更新 更多