确定运行时JVM可执行文件的位置

问题描述 投票:19回答:5

如何在运行时获取当前正在运行的JVM的可执行文件的位置?我想使用ProcessBuilder类将另一个JVM实例化为子进程。

我知道有java.home系统属性,但这没有指定JVM可执行文件的位置。我知道我可以做这样的事情来获取路径:

System.getProperties().getProperty("java.home") + File.pathSeparator + "bin" + File.pathSeparator + "java"

此代码不是平台无关的,因为Windows可执行文件的名称是java.exe,而不是java。是否有一种方法可以获取考虑平台特质的JVM可执行文件的路径?

java jvm filepath
5个回答
12
投票

您总是可以使用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";
}
    

2
投票

[该主题对涉及多个平台的问题进行了有趣的讨论:Finding current executable's path without /proc/self/exe


0
投票

是的,有一种方法可以获取JVM可执行文件的路径(如果存在)。将其包括在应用程序的配置中。有很多方法可以做到:命令行参数-java myApp.Main / path / to / Java;属性-java -Dpath.to.java = / path / to / java;等


0
投票

以下代码通过使用当前javaProcessHandle.Info获得到当前ProcessHandle.Info可执行文件的路径。


-4
投票

您正在尝试派生整个JVM。

© www.soinside.com 2019 - 2024. All rights reserved.