1

我正在制作一个运行应用程序的基本 .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 上运行吗?

4

2 回答 2

3

user.dir = 用户工作目录 [来自文档]

很难根据这个变量的值做出决定。根据启动“java”的程序,它可能有不同的值。例如,bat 文件可能具有从不同命令窗口调用的不同工作目录。

您可以使用%~dp0获取批处理脚本的位置,然后放置与此相关的其他路径。

另一种选择是使用诸如launch4j之类的工具,它可以轻松控制程序目录:使用launch4j时如何获取可执行文件的路径?

于 2013-10-02T11:12:26.633 回答
3

您可以通过在像这样启动 Java 程序时提供 user.dir 来做到这一点

java somepackage.Main -Duser.dir=C:/Users/myUser
于 2013-10-02T10:53:52.520 回答