यह मेरे own previous question पर एक फॉलोअप है और मैं यह पूछने के लिए शर्मिंदा हूं ... लेकिन वैसे भी: आप सिस्टम-स्वतंत्र तरीके से एक स्टैंडअलोन जावा प्रोग्राम से दूसरा JVM कैसे शुरू करेंगे? और उदाहरण के लिए एक env वैरिएबल जैसे JAVA_HOME पर भरोसा किए बिना, जो कि वर्तमान में चल रहे एक से भिन्न जेआरई को इंगित कर सकता है। मैं निम्नलिखित कोड जो वास्तव में काम करता है लेकिन अभी थोड़ा अजीब लगता है के साथ आया था:क्या यह * वास्तव में जावा कोड से दूसरा जेवीएम शुरू करने का सबसे अच्छा तरीका है?
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 सकता है कुछ अन्य मानकों के साथ शुरू कर दिया गया है (डी, -X ... .. ।) कि दूसरा जेवीएम के बारे में पता नहीं होगा।
इस उत्तर से कोड को लिया गया था जैसे http://stackoverflow.com/a/723914/3520484। – Mark