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

标签 java jvm filepath

如何在运行时获取当前运行的 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/

相关文章:

java - ImageIcon 如何获取图像的文件路径以在 java 中使用?

java - 从我的 Android 库访问应用程序 R 类

java - 什么是 java.lang.reflect.Field#slot?

objective-c - 使用 [NSBundle mainBundle] pathForResource : ofType:inDirectory: 访问文件

regex - 从 Perl 中的字符串中删除文件扩展名和路径

java - JVM内存管理

java - 无法从 titan 连接到远程 cassandra

Java在其他项目上导入包形式

java - 解析 Java 服务器异常日志

java - 如何摆脱 java.lang.OutOfMemoryError : Java heap space