这是我的own previous question的后续,我有点不好意思问这个问题......但无论如何:你将如何以独立于系统的方式从独立Java程序启动第二个JVM?而且不需要依赖像JAVA_HOME这样的env变量,因为它可能指向与当前运行的JRE不同的JRE。我想出了下面的代码,实际工作,但感觉只是一点点尴尬:*这真的是从Java代码启动第二个JVM的最佳方式吗?
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可能已经开始与一些其他的参数(-D,-X ... .. )第二个JVM不知道。
看起来像代码是从这个答案采取http://stackoverflow.com/a/723914/3520484。 – Mark 2016-09-24 16:24:46