jar中的Java相对路径名
不久前我开发了一个小程序,我把它做成了一个可执行的jar文件。 它使用了我放在一个名为“cache”的单独文件夹中的一些图像,该文件夹始终与.jar位于同一目录中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
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次拼写!您需要将当前目录“.”添加到类路径中