Hallo,
dein Problem ist etwas knapp beschrieben und daher kann ich dir nicht versprechen, dass ich genau dein Problem lösen kann.
Sicher ist auf jedenfall, dass du mit der Problemlösung den Java Grundsatz „Write once, run anywhere“ (WORA) verletzt => ist aber möglich:
Aus Java kannst du natürliche neue Prozesse starten ->
Runtime r = Runtime.getRuntime();
Process p = r.exec(„java -jar dateiname“)
-> mit trry & catch noch die Exeptions abfangen 
Ein Neustart der VM is ebenfalls möglich über einen Shutdownhook (Funktioniert jedoch nicht, wenn bei Windows die VM über den Taskmanager beendet wird)
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println(„Die VM wird gerade beendet!“);
}
});
Anstatt „Die VM wird gerade beendet!“ einfach aktuellen VM-Stand serialisieren und VM mit serialisierten Objekten neustarten => macht da weiter wo es aufgehört hat.
Viele Grüße
Sebastian_