【问题标题】:Java get path of executing jar without .jar fileJava获取没有.jar文件的执行jar的路径
【发布时间】:2015-07-28 08:40:24
【问题描述】:

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

现在我的结构是这样的:

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

但是我无法访问这些资源。我正在使用以下代码来获取路径: 目录=新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 的资源系统工作。

感谢转发

【问题讨论】:

  • 如果我的提议不起作用,请告诉我

标签: java path resources


【解决方案1】:

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

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

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

【讨论】:

  • 它可以工作,但如果我想在 IDE 中编译它,我仍然必须在此之前放置 getClass().getResources() 但谢谢
  • 这取决于您标记为 IDE 工作目录的目录。只要在两种情况下都可以使用相同的路径,就可以了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
相关资源
最近更新 更多