Java w/maven : getting sources from a jar file

标签 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;
    }

建议?

最佳答案

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

创建 jar 时您是否做了一些奇怪的事情?

关于Java w/maven : getting sources from a jar file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4943867/

相关文章:

java - 取消排序 Hashtable 中的排序对象

c# - 记录代码更改

java - 如何导出为可运行的桌面应用程序java?

java - 如何从 JAR 文件执行脚本?

java - 使用类路径参数运行 jar

java - 从桌面应用程序访问Web上的SQLite数据库

java - 使用 Apache Ignite 队列进行分布式处理

java - 将java包从Matlab部署工具导入到Android Studio应用程序

java - 在 Java/JNLP 中加载资源的可靠方法

java - 通过 Maven 使用 jar 作为资源