jar中的Java相对路径名

jar中的Java相对路径名,java,jar,path,Java,Jar,Path,不久前我开发了一个小程序,我把它做成了一个可执行的jar文件。 它使用了我放在一个名为“cache”的单独文件夹中的一些图像,该文件夹始终与.jar位于同一目录中 consoleBG = ImageIO.read(new File("./cache/consoleBG.png").toURI().toURL()); 当时它是从Netbeans和jar文件中运行的 现在我必须回到这个项目,突然jar不再使用相对路径: java.io.FileNotFoundException: C:\Users

不久前我开发了一个小程序,我把它做成了一个可执行的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-jarx:\Dromlius\Projects\MyProgram.jar
它不起作用! 但是如果我首先导航到文件夹
X:\Dromlius\Projects
,它会工作 我不知道为什么,但这对我来说已经足够了。
我将暂时保留这个问题,因为有些人可能有类似的问题,无法使用此解决方法。

您可以使用
ClassLoader.getSystemResource(“cache/consoleBG.png”).toURI()
,并确保
(当前目录)位于类路径中

您尝试过吗,MyClass.class.getClassLoader().getResource(“cache/consoleBG.png”).tori()?请参阅SO上的另一个相关问题,
ClassLoader.getSystemResource(“cache/consoleBG.png”)
返回空值。我错过了什么?jar与我的缓存文件夹位于同一文件夹中。我检查了1000次拼写!您需要将当前目录“.”添加到类路径中