Externen Prozess starten und JVM beenden?!

mccae

Senfdazugeber
Hallo!

Bis jetzt habe ich danach gesucht, jedoch bis jetzt keine Antwort gefunden...

Wenn man mit einem ProcessBuilder einen Prozess startet, läuft die JVM so lange bis der Subprocess gekillt wurde (System.exit() bleibt hängen).

Um jedoch meinen Updater aufzurufen, muss das aufrufende Programm geschlossen werden, damit bestimmte Ressourcen beschreibbar und aktualisierbar werden.

Ich kenne bis jetzt nur eine Windows Plattformabhängige Variante mit Rundll32.
Dies ist jedoch nicht dass was ich will...

Also, gibt es eine Möglichkeit einen Process aufzurufen der nicht die aufrufende JVM blockt?!

mfg
Martin
 
Hallo,

schau mal hier:
http://www.tutorials.de/forum/java/356314-hsqldb-dauerhaft-aus-java-heraus-starten.html

Mit dem ProcessBuilder kannst du ganz einfach einen Konsolen Befehl absetzen, der dann in einem neuen Prozess läuft.

Gruß Tom

Jau, danke. Diese Methode kenn ich aber schon...

"cmd /c" ist nicht gerade plattformunabhängig, und für jedes mögliche Betriebssystem eine Version schreiben ist auch nicht das Wahre (Unter Windows 95 wär' das dann command.com, usw.).

Da sich die Plattformen ständig ändern, ist auch nicht zu garantieren, dass der Code auch irgendwann in der Zukunft funktionieren wird...

mfg,
Martin
 
Hallo,

das du eine Betriebssystem-unabhängige Alternative zum Starten von externen Prozessen brauchst hattest du noch nicht erwähnt.
Was möchtest du überhaupt aufrufen? Ist denn nicht schon der Befehl den du absetzten möchtest Betriebssystem-spezifisch? Von daher kann du
schon noch den ProcessBuilder verwenden und für jedes unterstützte OS einen entsprechenden Aufruf hinterlegen.

Gruß Tom
 
Hallo!

Vielen Dank für deine Antwort!

Der Command den ich absetzen will, lautet wie folgt:

Code:
java -jar updater.jar -silent 0 -patch patches/patch0.pdif -apply client.zip

Also brauche ich unter Windows cmd, unter Linux anscheinend nichts davor, doch wie sieht es bei OSX aus? Dieses basiert ja auf Unix, jedoch bin ich mir nicht sicher, da ich eine solch überteuerte Gurke nicht besitze.

Kann ich also sicher sein, dass es bei Linux/Unix immer direkt über "java -jar" funktionieren wird?

Grüße,
Martin
 
Zuletzt bearbeitet:
Ich besitze eine solche überteuerte Gurke, wie du es so schön beschrieben hast und da funktioniert es wie bei Linux. ;-)

Gruß

Sascha
 
Zurück