Esto es una continuación de mi own previous question y estoy algo avergonzado de preguntar esto ... Pero de todos modos: ¿cómo comenzarías una segunda JVM desde un programa independiente de Java de una manera independiente del sistema? Y sin depender, por ejemplo, de una variable env como JAVA_HOME, ya que podría apuntar a un JRE diferente del que se está ejecutando actualmente. Se me ocurrió el siguiente código, que realmente funciona, pero se siente un poco incómoda:¿Es * esta * realmente la mejor manera de iniciar una segunda JVM a partir del código de Java?
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();
}
Además, la JVM actualmente en ejecución podría haberse iniciado con algunos otros parámetros (D, X ..., .. .) que la segunda JVM no sabría.
Parece que el código fue tomado de esta respuesta http://stackoverflow.com/a/723914/3520484. – Mark