Mac上的Java:无法读取可执行JAR中的资源

时间:2014-12-17 23:00:32

标签: java eclipse macos jar

当我从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位于images-folder中,应该是这样。使用Eclipse导出的“Runnable jar”创建jar,并选择“Package required libraries into JAR”。

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

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

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

以下是jar中的样子:http://i.stack.imgur.com/JAnmr.png

1 个答案:

答案 0 :(得分:0)

在你的截图中,该文件被命名为“splash.JPG”,你要求“splash.jpg”,这是一个不同的情况。 Mac文件系统不区分大小写。 JAR条目阅读代码可能不是。尝试在getResource调用中更改字符串,使其与文件名具有相同的大小写,反之亦然。