繁体   English   中英

我可以获得当前运行的 java 可执行文件的路径吗?

[英]Can I get the path of the currently running java executable?

假设我想从命令行运行 java 程序并使用以下命令:

myExes\java\java.exe AJavaProgram

如您所见, java.exe 不在我的路径中,所以我手动运行它,而不是简单地使用命令java AJavaProgram

我希望程序返回/打印命令中的第一个条目,在这种情况下,该条目是myExes\java (包括最后的java.exe也可以)。

有没有办法做到这一点?

最初,我认为这很简单。 args[0] 将返回路径,但事实并非如此。

ProcessHandle.current()返回当前 Java 进程。 您可以使用它来查看进程句柄信息中的完整命令:

ProcessHandle.current().info().command().ifPresent(
    cmd -> System.out.println(cmd));

无法获取字符串"myExes\java\java.exe" ,但可以获取 Java 安装的位置。

以下是在 Windows 10 上使用 OpenJDK 14 运行的结果:

System.out.println(System.getProperty("java.home"));
System.out.println(System.getProperty("sun.boot.library.path"));

Output

C:\prog\Java64\jdk-14
C:\prog\Java64\jdk-14\bin

作为参考, java.exe的完整路径为:

C:\prog\Java64\jdk-14\bin\java.exe

当您执行myExes\java\java.exe AJavaProgram AJavaProgram ,它是java.exe的参数,而不是相反。 当您执行java AJavaProgram时,它是相同的, AJavaProgramjava的参数。

这条路怎么样?
您可以获得 java 主目录。

String path = System.getProperty("java.home");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM