【问题标题】:Java on Mac: Cannot read resources in executable JARMac 上的 Java:无法读取可执行 JAR 中的资源
【发布时间】:2015-02-16 15:22:35
【问题描述】:

当我从 Eclipse 运行这段代码时,它运行良好,但不是从可执行 jar 运行:

String str = "";
ImageIcon icon = null;
InputStream is = getClass().getResourceAsStream("/images/splash.jpg");
if (is != null) {
    icon= new ImageIcon(ImageIO.read(is));  
} else {
    str = "stream is null";
}
JOptionPane.showMessageDialog(null,str,"A title",JOptionPane.PLAIN_MESSAGE,icon);

无论我如何编写路径,都会显示对话框,但不会从 getResourceAsStream 返回任何流。检查 jar 显示 splash.jpg 位于图像文件夹中,应该是这样。 jar 是使用 Eclipse 的“Runnable jar”导出创建的,并选择了“Package required libraries into JAR”。

我知道以前有人问过这个问题,并且我已经阅读了许多(大部分?)答案,并尝试了许多不同的替代解决方案。但似乎没有任何效果。任何帮助将非常感激。 (我在 OSX Maverick 上使用 java 8 和 Eclipse Mars。)

编辑:很抱歉没有列出我尝试过的替代方案。只是我没有做笔记,我也记不住。就路径而言,我尝试了“/”和“图像”(和“资源”)的所有组合。我还尝试通过 getResource() 从类和类加载器获取 URL。无论我做什么,我都会得到 null (在上面的示例中没有抛出异常)。

以下是 Eclipse 中的结构:http://i.stack.imgur.com/bIiEi.png

这是它在罐子里的样子:http://i.stack.imgur.com/JAnmr.png

【问题讨论】:

  • 请分享您尝试过的东西,如果我们只能继续说“我已经尝试了很多东西”,我们将无能为力。
  • 也许给我们看一个包含图像的 jar 部分的屏幕截图?说“不管我如何编写路径”是没有帮助的——你需要告诉我们你尝试了什么。它只是返回 null 还是给出错误消息?
  • 您需要将该图像文件放在您的 .java 文件旁边。
  • @BitNinja 我试过了(eclipse中src下的images文件夹和主文件夹)。没用。
  • @palun 然后还删除路径中的第一个/

标签: java eclipse macos jar


【解决方案1】:

在您的屏幕截图中,文件名为“splash.JPG”,而您要求输入“splash.jpg”,大小写有所不同。 Mac 文件系统不区分大小写。 JAR 条目读取代码可能不是。尝试更改 getResource 调用中的字符串,使其大小写与文件名相同,反之亦然。

【讨论】:

  • 我更改了文件名,现在可以正常使用了。谢谢! (看来我不能投票,因为我对论坛太陌生了(?)。)
猜你喜欢
  • 2018-10-18
  • 2015-01-16
  • 2012-04-07
  • 2014-06-07
  • 2016-02-15
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多