我正在制作一个运行应用程序的基本.bat文件。这是为了获得自动启动功能。
但由于某种原因,System.getProperty("user.dir")
并不总能获得正确的程序路径。
基本上我将它保存到.bat文件中:
protected final String fileSeparator=System.getProperty("file.separator");
out.println("@echo off");
out.println("start " + System.getProperty("user.dir") + fileSeparator +"App.jar");
out.println("exit");
在Windows服务器上,它返回正确的路径,但在Vista上却没有。
我有什么想法可以让它在所有版本的Windows上运行?
答案 0 :(得分:3)
您可以通过在启动Java程序时提供user.dir来完成此操作
java somepackage.Main -Duser.dir=C:/Users/myUser
答案 1 :(得分:3)
user.dir =用户工作目录 [from documentation]
很难根据此变量的值做出决定。根据启动“java”的程序,它可能具有不同的值。例如,bat文件可以具有从不同命令窗口调用的不同工作目录。
您可以使用%~dp0获取批处理脚本的位置,然后将相对于此的其他路径放置。
另一种选择是使用像launch4j这样的工具,它可以轻松控制程序目录:How to get the path to the executable when using launch4j?