Java w / maven:从jar文件获取源代码

时间:2011-02-09 10:53:53

标签: java jar

我写了一个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;
    }

建议?

2 个答案:

答案 0 :(得分:4)

第二个选项中的路径听起来不对。默认情况下,maven应该将资源与编译的类一起放入目标/类中。 Jaring应该采取所有这些,这就是为什么添加“/资源”听起来很奇怪。应该在testPicLoad.jar中找到gif!/ com / cmy ...

创建jar时,你是在做些奇怪的事吗?

答案 1 :(得分:1)

它发生的原因是因为我用eclipse来装罐子。我不知道为什么,但它就这样打包了。当我从命令行使用maven时,一切都很顺利。