Zur StartseiteLinksJava-BücherJava-Lösungen, Programm-Beispiele  
 
Wie starte ich eine Java-Anwendung aus einer anderen Java-Anwendung?

Ich kenne drei Möglichkeiten, aus einer Java-Anwendung eine andere Java-Anwendung zu starten.

Die erste wäre - die main-Methode einer Anwendung direkt auzurufen.
Die zweite - es wird eine Anwendung über Runtime.exec() gestartet. Das war bisher so ziemlich einfach.
Die dritte - es wird eine Anwendung über JDI(Java Debugger Interface). Diese Möglichkeit ist meiner Meinung nach die Beste, weil wir ganz genau den Ablauf der Anwendung über JDI kontollieren können. Der Nachteil ist aber, dass wir die Datei
tools.jar brauchen, die nur in der kompletten JDK-Installation vorhanden ist.

So starten Sie zweite Java VM innerhalb einer Anwendung.
Um dieses Beispiel laufen zu lassen, müssen Sie die Datei tools.jar, die sich im lib-Verzeichnis Ihrer Java-Installation (JDK) befindet, in die Systemvariable Classpath einfügen.

import com.sun.jdi.*;
import com.sun.jdi.connect.*;

class StartSecondVM {
     public void main(String[] args) {
           VirtualMachineManager vmm = Bootstrap.virtualMachineManager();
           LaunchingConnector connector = vmm.defaultConnector();
           // Die Standard Einstellungen entsprechen der gerade laufenden Anwendung.
           Map args = connector.defaultArguments();
           // Anstatt com.corp.run.Main kommt natürlich die 'main' Klasse
           // Ihrer Anwendung.

           ((Connector.Argument) args.get("main")).setValue("com.corp.run.Main");
           // Daer CLASSPATH zu der Anwendung und Bibliotheken (optional)
           ((Connector.Argument) args.get("options")).setValue("-classpath C:/MYLIB/LIB1.JAR");
           // Der Pfad zu JDK bzw. JRE home directory (optional)
           ((Connector.Argument) args.get("home")).setValue("C:\\j2sdk1.4.1\\jre");
           // JVM-Datei (optional)
           ((Connector.Argument) args.get("vmexec")).setValue("javaw");
           // Nach dem Aufruf der Methode 'start' die VM weiter laufen lassen
           ((Connector.BooleanArgument) args.get("suspend")).setValue("false");
           // Die VM starten
           connector.launch(args);
     }
}

  © Dmitri Ratkovski 2001-2004

Bei allen Fragen: webmaster@java-technology.net