Ausführen eines Java-Programms von einem anderen Java-Programm

7

Ich arbeite an einem einfachen Java-Programm. Es kompiliert und führt einfach ein anderes Java-Programm aus. Ich verwende die Runtime.exec () -Funktion zum Kompilieren und Ausführen. Es gibt kein Problem mit der Kompilierung. aber wenn es läuft, wenn das zweite Programm eine Eingabe benötigt, um von der Tastatur zu lesen, kann ich es vom Hauptprozess nicht geben. Ich habe getOutputStream () -Funktion verwendet. aber es konnte nicht helfen. Ich werde meinen Code bereitstellen.

%Vor%

Dies ist mein Master-Programm (sam.java).

Das Folgende ist der Code von sam2.java

%Vor%

Es gibt kein Problem, wenn mein zweites Programm nur druckbare Anweisungen enthält. Aber das Problem entsteht, wenn ich etwas von dem anderen lesen muss.

    
BBHeeMAA 05.03.2013, 08:19
quelle

3 Antworten

18

Es ist ein bisschen komisch, aber Sie können das zweite Programm ausführen, ohne es zu fälschen. Einfach die Hauptmethode aufrufen. Vergiss also den Laufzeitabschnitt und tu dies:

%Vor%

Natürlich müssen Sie sam2 zur Kompilierzeit kompilieren

    
András Tóth 05.03.2013, 08:30
quelle
10

Jeder Prozess muss laufen und beendet werden können. Sie können Process#waitFor für diesen Zweck verwenden. Ebenso müssen Sie alle Ausgaben des Prozesses zur gleichen Zeit verbrauchen. waitFor wird blockiert, so dass Sie ein Thread verwenden müssen, um die Eingabe zu lesen (und ggf. die Ausgabe in den Prozess schreiben)

Abhängig vom Speicherort der Java / Class-Datei müssen Sie möglicherweise auch einen Startordner angeben, von dem aus die Ausführung des Prozesses gestartet werden kann.

Das meiste ist mit ProcessBuilder

wesentlich einfacher %Vor%

Nun sollten Sie natürlich die Rückgabeergebnisse der Prozesse überprüfen und vielleicht einen besseren Mechanismus für die Interaktion mit den Prozessen erzeugen, aber das ist die Grundidee ...

    
MadProgrammer 05.03.2013 09:40
quelle
1

Sie können einfach die Hauptmethode der zweiten Klasse aufrufen. Die Hauptmethode ist wie jede andere statische Methode.

    
Jay Q. 05.03.2013 08:32
quelle

Tags und Links