これは私自身の以前の質問のフォローアップであり、これを尋ねるのはちょっと恥ずかしいです...しかし、とにかく、システムに依存しない方法でスタンドアロンのJavaプログラムから2番目のJVMをどのように起動しますか? また、たとえば 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 は、2 番目の JVM が知らない他のパラメーター (-D、-X...、...) で開始されている可能性があります。