【发布时间】:2015-12-25 01:10:08
【问题描述】:
我已经在 java 中从事一个项目有一段时间了。在尝试运行该项目的 .jar 时,我意识到一些可怕的事情:它不再使用相对路径,而是在“C:\Users\Username\...”目录中搜索文件。
我读到你应该使用getClass().getResourceAsStream("...");而不是new File("...");
在很多地方我都使用了new Sprite(new File("sprites\\sprite.png")); 之类的东西,因此需要很长时间才能全部替换。
我希望我可以做点别的事情。 比如,有没有办法改变 File 类的行为?
有什么建议吗?谢谢。
编辑:
我尝试了 Duran Wesley Harris 的想法,即使用.jar 将user.dir 属性设置为文件夹的路径,这实际上成功地更改了查找文件的位置。但是程序仍然无法加载文件。我实际上可以将它正在使用的目录复制到文件资源管理器中并以这种方式加载文件,所以我很奇怪为什么它不能在程序中加载它。
注意:这些文件不在.jar 中,它们位于它旁边的同一个文件夹中。此外,该程序在 IDE (IntelliJ Idea) 中完美运行。
【问题讨论】:
-
不,如果您的资源现在已嵌入,则必须使用 getResource
-
你可以像这样实现第一个getRealPath("/images");之后创建文件 filePath = new File(realPath);这将花费更少的时间。
-
它是使用相对路径。但是,您在
C:\Users\Username\...某处执行,所以它看起来就是这样。 -
其实我是在H:\...