我在Java控制台应用程序上工作。我的application.properties文件中有一个属性,它包含另一个文件名作为属性的值,如
my.file.location=file:myDir/myFileName
在代码中我尝试获取这样的文件:
@Value("${my.file.location}")
private File myfileLocation;
如果我从包含jar文件的目录启动应用程序,则解析该文件,但是当我从其他位置运行我的应用程序时,文件位置无效。
我不能在classpath上拥有这个文件,它必须在jar文件的外部。
如何使文件路径相对于我的jar文件而不是当前工作目录?
答案 0 :(得分:1)
我相信这与Spring无关吗?您只想加载配置文件,即在应用程序内部,解压缩,以便用户可以修改它,好吗?
首先,您可以尝试始终设置工作目录,我相信这是"标准" 解决方案。在Windows中,您可以创建链接,指定开始于部分,并包含jar
文件的路径(或bat
或{{ 1}},等等。
如果您坚持使用 jar路径,则可以使用How to get the path of a running JAR file解决方案。请注意,必须从文件系统加载jar:
cmd