*this* 真的是从 Java 代码启动第二个 JVM 的最佳方式吗?
2022-09-01 02:13:21
这是我自己上一个问题的后续,我有点尴尬地问这个问题......但无论如何:您将如何以独立于系统的方式从独立的Java程序启动第二个JVM?例如,不依赖于像JAVA_HOME这样的env变量,因为这可能指向与当前运行的JRE不同的JRE。我想出了以下代码,它实际上有效,但感觉有点尴尬:
public static void startSecondJVM() throws Exception {
String separator = System.getProperty("file.separator");
String classpath = System.getProperty("java.class.path");
String path = System.getProperty("java.home")
+ separator + "bin" + separator + "java";
ProcessBuilder processBuilder =
new ProcessBuilder(path, "-cp",
classpath,
AnotherClassWithMainMethod.class.getName());
Process process = processBuilder.start();
process.waitFor();
}
此外,当前运行的 JVM 可能是使用第二个 JVM 不知道的其他一些参数(-D, -X..., ...)启动的。