如何使File类使用相对路径?

时间:2015-12-24 05:51:10

标签: java jar filepath

我已经在java工作了一段时间了。我在尝试运行.jar项目时意识到了一些可怕的事情:它不再使用相对路径,而是在" C:\Users\Username\..."文件目录。

我读到的不是new File("...");,而是使用getClass().getResourceAsStream("...");

在很多地方,我使用new Sprite(new File("sprites\\sprite.png"));等内容,因此需要很长时间才能进入并替换所有内容。

我希望我还能做些别的事。 比如,有没有办法改变File类的行为?

任何提示?感谢。

修改
我尝试了Duran Wesley Harris的想法,即将user.dir属性设置为.jar文件夹的路径,这实际上已成功更改了文件的查找位置。但该程序仍然无法加载文件。我实际上可以将它使用的目录复制到文件资源管理器中并以这种方式加载文件,这对我来说是神秘的,为什么它不能在程序中加载它。

注意:文件不在.jar内,它们位于同一文件夹旁边。此外,该程序在IDE(IntelliJ Idea)中完美运行。

1 个答案:

答案 0 :(得分:0)

就个人而言,我认为您应该花时间重构代码以使用xx.getResourceAsStream()方法。

如果您想尝试制作一个hacky解决方案,可以尝试使用"user.dir"System.setProperty()通过命令行将java -Duser.dir=""属性设置为jar的根目录。