【发布时间】: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,它就可以工作。我
我不知道为什么,但这对我的目的来说已经足够了。
不过,我打算暂时搁置这个问题,因为有人可能有类似的问题并且无法使用此解决方法。
【问题讨论】:
-
你试过了吗,MyClass.class.getClassLoader().getResource("cache/consoleBG.png").toUri() ?
-
在 SO 上查看另一个相关问题,How to Load File Outside of, but Relative to, the JAR?