Erfassen Sie die Ausgabe eines externen Programms in JAVA

8

Ich versuche, die Ausgabe eines externen Programms mit Java zu erfassen, aber ich kann nicht.

Ich habe den Code, um es zu zeigen, aber nicht um es in eine Variable zu setzen.

Ich werde zum Beispiel sqlplus verwenden, um meinen Oracle-Code "in exec.sql" auszuführen. system / orcl @ orcl: Benutzer / Passwort / DB-Name

%Vor%     
AHméd Net 26.01.2013, 22:58
quelle

2 Antworten

6

Da der Prozess in einem neuen Thread ausgeführt wird, ist es wahrscheinlich, dass keine Ausgabe oder unvollständige Ausgabe verfügbar ist, wenn Sie zu Ihrer while-Schleife kommen.

%Vor%

Sie müssen also warten, bis der Prozess abgeschlossen ist, bevor Sie versuchen, mit der Ausgabe zu interagieren. Versuchen Sie es mit dem Process.waitFor () Methode, um den aktuellen Thread anzuhalten, bis der Prozess abgeschlossen werden konnte.

%Vor%

Dies ist nur ein einfacher Ansatz, Sie könnten auch die Ausgabe des Prozesses parallel verarbeiten, aber dann müssten Sie den Status des Prozesses überwachen, dh ob er noch läuft oder abgeschlossen ist, und die Verfügbarkeit der Ausgabe .

    
jsuhre 26.01.2013, 23:39
quelle
6

Benutze Apache Commons Exec , es wird dir das Leben sehr erleichtern. In den Anleitungen finden Sie Informationen zur grundlegenden Verwendung. Um die Befehlszeilenausgabe nach dem Erhalt eines executor -Objekts (wahrscheinlich DefaultExecutor ) zu lesen, erstellen Sie OutputStream zu dem gewünschten Stream (dh eine FileOutputStream -Instanz oder System.out ) und:

%Vor%     
Muhammad Gelbana 26.01.2013 23:00
quelle

Tags und Links