![](/img/trans.png)
[英]How to get the path to the currently running Java command-line path? (before symbolic links)
[英]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
时,它是相同的, AJavaProgram
是java
的参数。
这条路怎么样?
您可以获得 java 主目录。
String path = System.getProperty("java.home");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.