Sam*_*tia 18 java jvm filepath
如何在运行时获取当前运行的JVM的可执行文件的位置?我想使用ProcessBuilder类将另一个JVM实例化为子进程.
我知道有java.homeSystem属性,但是这并没有指定JVM可执行文件的位置.我知道我可以做这样的事情来获得路径:
System.getProperties().getProperty("java.home") + File.pathSeparator + "bin" + File.pathSeparator + "java"
此代码与平台无关,因为Windows可执行文件的名称java.exe不是java.有没有办法获取JVM可执行文件的路径,将平台的特性考虑在内?
cze*_*rny 11
java以下代码使用ProcessHandle.Infocurrent获取当前可执行文件的路径ProcessHandle。
Optional由于对命令信息的访问可能受到操作系统权限的限制,因此结果被包装起来。
String javaExecutablePath = ProcessHandle.current()
.info()
.command()
.orElseThrow();
Run Code Online (Sandbox Code Playgroud)
Xen*_*ier 10
您始终可以使用os.name来检查用户是否正在运行Windows.这将适用于OS X,Linux和Windows
String jvm_location;
if (System.getProperty("os.name").startsWith("Win")) {
jvm_location = System.getProperties().getProperty("java.home") + File.separator + "bin" + File.separator + "java.exe";
} else {
jvm_location = System.getProperties().getProperty("java.home") + File.separator + "bin" + File.separator + "java";
}
Run Code Online (Sandbox Code Playgroud)
The*_*eLQ -4
您正在尝试分叉整个 JVM。
但如果您确实必须这样做,您可以尝试java -arguments直接执行,因为大多数标准 java 安装都将 java 放在 cli 路径上。