Java Programm aus anderen Java Programm starten

Jackii

Mitglied
Hallo alle.

Ist es möglich ein Java Programm aus ein anderen Java Programm per Button klick zu starten???

Ich benutze Netbeans.
Ich möchte 2 Projekte erstellen und aus dem 1. Projekt das 2. Projekt per Button klicken starten.

MfG
Jackii
 
Ja. Wenn beide in der selben JVM laufen dürfen/sollen muss man ja nur die "Start" Methode aus dem 2. Projekt aufrufen bzw. das "Start" Objekt (z.B. den JFrame) erzeugen. Bedingung beide Projekte bzw. deren Klassen sind im CLASSPATH eingetragen.
Soll das zweite Programm in einer eigenen VM laufen müsste man mit Runtime.exec(...) das Programm so starten wie man es von der Konsole aus starten würde.
 
Könntest du mir ein Beispiel schicken wie ich die "Start" Methode aus dem 2. Projekt aufrufen kann.
Beide Projekte laufen im gleichen JVM.
Und wie kann ich die Projekte im classpath eingetragen?
 
Könnte man dann der Einfachheit halber dann nicht beide Projekte in ein gemeinsames stecken?
Eine Möglichkeit wäre einfach die main des zweiten Projektes aufzurufen.
Java:
HauptKlasseAusProjektZwei.main(null);
Benutze kein Netbeans - hab daher auch keine Ahnung wie man hier Klassen aus einem anderen Projekt einbindet (in Eclipse nennt sich das Build Path)
 
Danke schonmal. Ich probiert das jetzt mal aus.

Könnte man dann der Einfachheit halber dann nicht beide Projekte in ein gemeinsames stecken?
Leider bekomme ich da eine NullPointerException wegen BufferStrategy und da mir keiner weiterhelfen kann probier ich das so -.-

Leider funktionier das mit Netbeans nicht und ich habe leider auch nichts im Inet gefunden -.-
Weißt du vllt eine andere Lösung??
 
Über "Project Properties | Categories:Libraries | Compile:Add Project..." können wir ein NetBeans-Projekt hinzufügen. Danach können wir das hinzugefügte Projekt mit "Main.main(null)" starten (falls die Hauptklasse "Main" heißt, ansonsten den verwendeten Namen angeben).

Gruß,
André
 
Irgendwie bekomm ich das nicht hin -.-
Das mit dem einbinden hab ich gemacht.

Ich schreib mal auf was ich so hab:

Das erste Projekt heißt: Javio
Dort gibt es in den Quellpaketen ein Package das Menu heißt, dort will ich die Klasse KeyConfig.java aufrufen um das Spiel zu starten.

Das zweite Projekt heißt: StartBild
Dort will ich aus der Klasse StartBild.java die Klasse KeyConfig aufrufen.

Ich hab schon versucht mit Menu.KeyConfig(null); die KeyConfig aufzurufen...er kennt KeyConfig dann nicht.
 
Zuletzt bearbeitet:
Irgendwie bekomm ich das nicht hin -.-
Das mit dem einbinden hab ich gemacht.

Ich schreib mal auf was ich so hab:

Das erste Projekt heißt: Javio
Dort gibt es in den Quellpaketen ein Package das Menu heißt, dort will ich die Klasse KeyConfig.java aufrufen um das Spiel zu starten.

Das zweite Projekt heißt: StartBild
Dort will ich aus der Klasse StartBild.java die Klasse KeyConfig aufrufen.

Ich hab schon versucht mit Menu.KeyConfig(null); die KeyConfig aufzurufen...er kennt KeyConfig dann nicht.
Wie die Projekte heißen ist wurscht, das ist eine Netbeans interne Sache. Wichtig ist, das die Klassen aus dem einen Projekt (Javio) auch im anderen Projekt (StartBild) angezogen werden können (muss in Netbeans eingestellt werden)

Ist KeyConfig die Hauptklasse und enthält die
Code:
static main(String[])
zum Starten der zweiten Applikation? dann KeyConfig.main(null). Den von Dir aufgerufenen Konstruktor wird es wohl nicht geben und wenn doch, dann wird er mit null nicht viel anfangen können.
 
Das mit dem Splash Screen ist ja eine tolle Idee aber ich möchte gerne Buttons drücken können.

Der Startbildschirm funktionier ja... wenn ich das Spiel starte wird das Frame von Startbildschirm geschlossen und das Spielframe wird gezeichnet aber nicht ganz...ich bekomme wegen dem BufferStrategy ein Bluescreen.
 
Du vermischt hier gerade zwei Threads ;-)
Was ist wenn Du für den Startbildschirm auch mit AWT machst?
Und wenn es hier tatsächlich nur um einen spezifischen Startbildschirm für ein Spiel handelt warum legst Du das Projekt nicht zusammen?
 
Hmm, habe auch gerade deinen anderen Thread gesehen mit dem Swing und AWT mischen. Hat dein Startbildschirm die gleiche Größe, wie dein eigentliches Spiel? Vielleicht solltest du einfach beide Projekte in eins überführen und die GUI einheitlich in Swing schreiben. Dann könntest du für deinen Startbildschirm und dein Spiel jeweils ein JPanel verwenden und zwischen den beiden JPanels hin und her wechseln indem zu z.B. das CardLayout verwendest.

How to Use CardLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)

Ist natürlich alles ein bisschen mehr Aufwand, aber es ist sicherlich eine elegantere und weniger fehleranfällige Variante.
 
Hallo, ich häng mich hier mal an die ursprüngliche Frage an:

Wie kann ich ein Java Programm aus einem Java Programm starten?

Java:
ProcessBuilder prcbTw = new ProcessBuilder("java","Proggi");
prcbTw.directory(new File(System.getProperty("java.home")));									
Process prcTw = prcbTw.start();

Habs auch schon versucht mit dem Pfad der .java Datei usw.
 
gibt es keine API die genutzt werden kann um die andere Applikation anzusprechen ?

der Aufruf der main Methode klingt n bisschen nach Holzhammermethode...
 
Nein. Das mit dem Prozess builder ist schon der richtige weg. Aber wenn man keine Fehlermeldung postet oder drumherum die Aktivität beschreibt, dann frage ich mich wie man hier helfen soll.
 
der Aufruf der main Methode klingt n bisschen nach Holzhammermethode...
Warum? Der Aufruf von Methoden gehört doch zum normalen Leben in Java. Um ein Java-Programm zu starten wird immer die main()-Methode aufgerufen. Warum also nicht auch auch in einem Java-Programm, wenn man ein anderes Java-Programm starten möchte?
Der ProcessBuilder kommt dann ins Spiel, wenn eine Kommunikation beider Programme miteinander benötigt wird.
 
Warum? Der Aufruf von Methoden gehört doch zum normalen Leben in Java. Um ein Java-Programm zu starten wird immer die main()-Methode aufgerufen. Warum also nicht auch auch in einem Java-Programm, wenn man ein anderes starten möchte?
fuer mich zaehlt die main methode einfach nicht zur API. Wenn ich aus einem Programm ein anderes nutzen will, so nutze ich die API. Wenn ich ein anderes Programm in einer anderen VM starten will vielleicht, aber wenn man sich nochmal den ausgangspost anschaut
Hallo alle.

Ist es möglich ein Java Programm aus ein anderen Java Programm per Button klick zu starten???

Ich benutze Netbeans.
Ich möchte 2 Projekte erstellen und aus dem 1. Projekt das 2. Projekt per Button klicken starten.
klingt es eher nach "fuege das eine Projekt in den Classpath des anderen und nutze die API" anstatt ueber ProcessBuilder die main zu rufen.....
 
Niemand hat gesagt, dass über den ProcessBuilder die main()-Methode aufgerufen werden soll.
Die main()-Methode eines Java-Programms kann auch so erfolgen, wie das von Michael... oben gezeigt wurde - also ohne ProcessBuilder. Das erscheint mir als der einfachste Weg.
 

Zurück
Oben