【问题标题】:Java relative pathname from jar来自 jar 的 Java 相对路径名
【发布时间】:2016-04-11 17:49:45
【问题描述】:

前段时间我开发了一个小程序,我把它做成了一个可执行的 jar 文件。 它使用了我放置在名为“cache”的单独文件夹中的一些图像,该文件夹始终与 .jar 位于同一目录中。

consoleBG = ImageIO.read(new File("./cache/consoleBG.png").toURI().toURL());

当时它通过 Netbeans 和 jar 文件运行。

现在我不得不回到这个项目,突然 jar 不再使用相对路径:

java.io.FileNotFoundException: C:\Users\Dromlius\.\cache\consoleBG.png

我尝试了所有方法和我在网上找到的解决方案:

MyClass.class.getResource("cache/consoleBG.png").toUri()

导致 NullPointerException!

我只需要一种快速而肮脏的方法来获取 .jar 文件的相对路径,因为该软件将在许多不同的系统上使用。

提前谢谢你,

德罗姆利乌斯

编辑:好的,当我从控制台调用 jar 时: C:\Users\Dromlius>java -jar X:\Dromlius\Projects\MyProgram.jar 这没用! 但是如果我先导航到文件夹X:\Dromlius\Projects,它就可以工作。我 我不知道为什么,但这对我的目的来说已经足够了。 不过,我打算暂时搁置这个问题,因为有人可能有类似的问题并且无法使用此解决方法。

【问题讨论】:

标签: java jar path


【解决方案1】:

您可以使用ClassLoader.getSystemResource("cache/consoleBG.png").toURI() 并确保.(当前目录)在类路径中

【讨论】:

  • ClassLoader.getSystemResource("cache/consoleBG.png") 返回空值。我错过了什么? jar 与我的缓存文件夹位于同一文件夹中。我检查了 1000 次拼写!
  • 您需要添加当前目录“.”到你的类路径
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 2011-12-03
  • 2018-09-30
  • 1970-01-01
  • 2012-02-03
  • 2012-01-31
  • 1970-01-01
相关资源
最近更新 更多