如何在运行时获取当前运行的 JVM 的可执行文件的位置?我想使用 ProcessBuilder 类将另一个 JVM 实例化为子进程。
我知道有 java.home
系统属性,但这并没有指定 JVM 可执行文件的位置。我知道我可以做这样的事情来获得路径:
System.getProperties().getProperty("java.home") + File.pathSeparator + "bin"+ File.pathSeparator + "java"
此代码不是平台独立的,因为 Windows 可执行文件的名称是 java.exe
,而不是 java
。有没有办法获取考虑平台特性的 JVM 可执行文件的路径?
最佳答案
您总是可以只使用 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";
}
关于java - 在运行时确定 JVM 可执行文件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392416/