Jars oder JNLPs aus java code in gleicher JVM starten

_Andi91

Bekanntes Mitglied
Hi,

ich möchte gerne .jar Dateien oder jnlps aus meinem Code heraus starten. Diese gestarteten Anwendungen sollen dann aber in der selben JVM laufen.

Bsp. wie ichs lösen wollte:

Java:
//JNLP Start
Runtime.getRuntime().exec("C:\\Programme\\Internet Explorer\\iexplore.exe http://localhost/test.jnlp");

//JAR Start
Runtime.getRuntime().exec("C:\\Programme\\java\\bin\\java.exe -jar C:\\test.jar");

Funktioniert auch nur, dass die gestartete Anwendung aus der JNLP bzw. dem Jar dann in einer neuen VM läuft. Ist das irgendwie möglich die Anwendung in der selben VM zu starten?
 
über Runtime exec startest Du ja einen neuen Prozess. Beim jar kann man einfach die entsprechende main(...) wie eine normale Methode aufrufen, dann läuft die Anwendung in der selben VM.
Mit Web Start kenne ich mich nicht sonderlich aus, aber das sollte es auch Wege geben an das Archiv zu kommen und die main aufzurufen.
 
Das JNLP File wirst du nicht in der selben VM starten können.

Allerdings könntest die JARs, welche in der JNLP angegeben sind benutzen. Du hast da natürlich das Problem dass diese JARs lokal liegen müssen ... das würde bedeuten, dass du dir wahrscheinlich eine Anwendung oder ein Script schreiben müsstest, welche das JNLP File parst, dann alle Jars lokal zusammensammelt und dann deine eigentliche Anwendung startest (nicht vergessen: die Jars in den classpath aufnehmen). Diese kann dann wiederrum auf die main in der WebstartApp zugreifen und beides läuft in einer VM.

Deine [c]C:\\test.jar[/c] brauchst du auch nur in den classpath mit aufnehmen und deine Anwendung kann dann auf die main innerhalb deiner test.jar zugreifen.

Wichtig ist! Jeder Aufruf von java.exe macht dir eine neue VM. D.h. du musst schauen, dass du nur EIN einzigen Aufruf von java.exe mit allen JARs, die du in einer VM laufen lassen möchtest, hast.
 
Zuletzt bearbeitet:

Zurück
Oben