Ich habe eine Java-Anwendung (Prinzipal), die ein ausführbares jar aufruft:Warten auf Java-Prozess beendet
Process p = Runtime.getRuntime().exec(java -jar C:\\PFC\\maestro.jar)
p.waitFor();
maestro.jar ist eine Java-Anwendung, die 2 Threads erstellt, und ruft eine andere ausführbare jar (welches Verfahren Variable ist "b"). Dann warte ich für sie wie folgt aus:
b.destroy(); //kill other executable jar that is called
manejadora.join(); //thread finished
controlador.join(); //thread finished
System.out.println("all finished");
maestro.jar läuft RICHTIG und es zeigt „beendet“ auf Eclipse, wenn ich es laufen, so gibt es keine Probleme.
Wenn principal versucht, maestro.jar auszuführen, wird es korrekt ausgeführt, aber der Prinzipal wartet auf maestro.jar auf "p.waitFor()", wenn maestro.jar bereits beendet ist.
Ich verstehe nicht warum.
Können Sie mir etwas Orientierung geben? Vielen Dank!
'Process.waitFor()' wahrscheinlich nicht gebrochen ist, so durch Eliminierung, ist es sehr wahrscheinlich, dass die 'java.exe' Verfahren zur maestro.jar hat schließlich in Betrieb gehalten Die Arbeit ist erledigt. Sie können dies einfach mit Process Explorer überprüfen. Wenn dies der Fall ist, müssen Sie herausfinden, warum die untergeordnete JVM nicht z. Verwenden von JVisualVM, um einen Heapspeicherauszug zu erstellen. – Barend