Это продолжение моего собственного предыдущего вопроса , и я немного стесняюсь спросить это ... Но в любом случае: как бы вы запустили вторую JVM из отдельной Java-программы в системе? независимый путь? И не полагаясь, например, на переменную env, такую как JAVA_HOME, поскольку она может указывать на другую 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 могла быть запущена с некоторыми другими параметрами (-D, -X ..., ...), о которых вторая JVM не знала бы.