【发布时间】:2011-02-09 10:53:52
【问题描述】:
我编写了一个 gui 应用程序,并使用图像文件 (gif) 作为图标。当我在我的 IDE 中运行应用程序时 - 会出现图标。当我从 jar 运行它时 - 它们失败(资源上的空指针异常)
包结构如下:
代码:src/main/java/com/my/app
资源:src/main/resources/com/my/app
我写了这个小例子:
URL url ;
url = GuiUtils.class.getResource("/com/my/app/gui/fading_lines_blue_64x64.gif");
System.out.println("url: " + url);
url = GuiUtils.class.getResource("/resources/com/my/app/gui/fading_lines_blue_64x64.gif");
System.out.println("url: " + url);
从 IDE 运行时:
url: file:/C:/Repositories/V8/trunk/MyApp/build/com/my/app/gui/fading_lines_blue_64x64.gif
url: null
当从 Jar 中运行时:
url:null
url:jar:file:/C:/DevEnv/Projects/Viewer/testPicLoad.jar!/resources/com/cmy/app/gui/fading_lines_blue_64x64.gif
我是这样解决的,但这显然不是正确的方法:
public static URL getResourceURL(String path) {
URL url = GuiUtils.class.getResource(path);
if (url == null) {
url = GuiUtils.class.getResource("/resources"+path);
}
return url;
}
建议?
【问题讨论】:
-
When ran from the Jar你在这里做了什么?