【发布时间】: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 然后还删除路径中的第一个
/