Java获取没有.jar文件的执行jar的路径

标签 java path resources

我正在尝试使用 intelij Idea 工件将我的应用程序导出到 jar 中。我导出除资源之外的所有内容(我认为 14,5GB 对于 .jar 文件来说太多了),因此我将 /res 文件夹放在与 jar 相同的文件夹中。

现在我的结构如下所示:

/SAR.jar
/res/colors/
/res/icons/
/res/map/

但是我无法访问此资源。我使用以下代码来获取路径: dir = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath() + "/res/icons/");

从 IDE 运行时它可以工作并打印正确的位置。但是,当我构建一个工件并通过 cmd 运行它时,我得到空指针并打印此路径:D:/JavaProject/SAR/out/artifacts/SAR_jar/SAR.jar/res/icons。但我的资源不在 jar 文件内,它们仅位于同一目录中。

有什么想法吗?我只在路径中完成了 android 项目,我根本无法让这个资源系统与 jar 一起工作。

感谢转发

最佳答案

您正在尝试使用依赖于源代码位置的路径来访问资源,但显然情况并非如此,因为您将代码(或 jar 中的字节码)和资源分开了。您必须使用相对于 jar 的路径或绝对路径来访问它们。

我认为您只需要以下路径(如果 jar 是从包含 jar 的目录运行的):

new File("res/icons/icon.png")

关于Java获取没有.jar文件的执行jar的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276160/

相关文章:

java - AlarmManager 重置显示错误 在 onCreate() 之前系统服务不可用于 Activity

java - 使用十六进制数初始化无符号字节数组

java - jdbcTemplate 为 null 并抛出空指针异常

java - Android - 膨胀类 fragment 时出错(试图让谷歌地图 api v2 工作)

java - 每次使用时都必须关闭所有资源吗?

java - 资源目录可以是maven中源的子目录吗?

.net - 将大型资源文件物理拆分为多个文件,而编译器将其视为一个文件

c# - 如何获取我的项目路径?

java - 使用 File.separator 的相对路径

django - 在控制台启动时设置 pydev (Eclipse) 中交互式控制台的当前目录