ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
1320
1320
EMPFEHLEN
-
Hallo,
ich starte aus meinem Java-Programm eine (*.EXE)-Konsolen-Anwendung mit dem Processbuilder. Dabei übergebe ich auch Parameter. Das funktioniert alles super. Einziges Problem: Es öffnet sich keine Konsole für die Anwendung, sie läuft im Hintergrund. Ich möchte aber möglichst die Konsolen-Ausgaben sehen.
Aufruf:
String[] command = new String[3];
command[0] = "C:\\blabla.exe";
command[1] = "-param1";
command[2] = "value1";
ProcessBuilder pb = new ProcessBuilder();
pb.command(command);
Process proc = pb.start();
Wenn ich die Anwendung nicht direkt, sondern über "cmd start" starte, öffnet sich die gewünschte Konsole, aber ich kann die Anwendung nicht mehr über proc.destroy() beenden. Ich vermute, dass da in der Variable proc nicht meine Anwendung, sondern "cmd" steht.
Die eigene Anwendung muss ich aber - selbst wenn ich sie ausserhalb von Java starte - mit "Strg+C" beenden, da sie sich nicht von alleine beenden lässt.
Hat jemand einen Tipp, was ich da machen kann?
Gruß
Martin
-
Wenn ich dich richtig verstanden hab dann könnte das hier eine Lösung für sich sein.
Bei dem Beispiel wird alles was auf der Konole steht in der Netbeans/ Eclipse oder was auch immer Konsole ausgegeben.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
import java.io.*; import java.util.Scanner; public class Main { public static void main(String[] args) throws IOException { ExecDir(); } public static void ExecDir() throws IOException { ProcessBuilder builder = new ProcessBuilder("cmd", "/c", "dir"); builder.directory(new File("c:/")); Process p = builder.start(); Scanner s = new Scanner(p.getInputStream()).useDelimiter("\\Z"); System.out.println(s.next()); } }
Das kannst du dann ja nach belieben in eine Datei schreiben oder in einem Fenster ausgeben oder wie auch immer.
Hab das Beispiel übrigens aus dem Buch Java ist eine Insel!
MfG
-
Hallo thealflex,
danke für die schnelle Antwort.
Ich weiß schon, wie man die Ausgabe umleiten kann, aber ich möchte ja den mit
Code :1 2 3 4 5 6 7 8 9 10
String[] command = new String[6]; command[0] = "cmd"; command[1] = "/c"; command[2] = "start"; command[3] = "C:\\blabla.exe"; command[4] = "-param1"; command[5] = "value1"; ProcessBuilder pb = new ProcessBuilder(); pb.command(command); proc = pb.start();
erstellten Prozess beenden. Also genauer gesagt will ich "blabla.exe" mittels proc.destroy() beenden. Aber proc zeigt auf "cmd" und nicht auf "blabla.exe".
Ich hoffe, es ist verständlich, was ich möchte.
-
06.12.07 11:32 #4_jsd_ Tutorials.de Gastzugang
hi,
solltest vieleicht das cmd weg lassen!? und nur start blbla.exe aufrufen....
hmfGeändert von _jsd_ (06.12.07 um 11:35 Uhr)
-
Hallo _jsd_,
sorry, ich verstehe deinen Tipp nicht.
Meinst du, ich sollte dem ProcessBuilder ein Startverzeichnis (hier: "c:\\") mitgeben und dann als Anwendung nur noch "blabla.exe" übergeben? Dann bekomme ich eine IOException mit der Meldung: "CreateProcess error=2, Das System kann die angegebene Datei nicht finden."
Wenn ich die EXE mit dem gesamten Pfad ausführe und kein Verzeichnis setze, läuft zwar die Anwendung wie geschmiert, aber ich sehe keine Ausgabe. Vielleicht sollte ich hier einen weiteren Prozess "cmd" starten und dem den InputStream von "blabla.exe" übergeben?
Was meinst du mit "ohne verzeichniswechsel"? Mache ich den denn überhaupt?
Nur mit "start" und ohne "cmd" gehts auch nicht, da ja "start" ein Konsolenbefehl ist, den er sonst garnicht kennt.
-
06.12.07 12:01 #6_jsd_ Tutorials.de Gastzugang
ungefähr so start c:\blabla.exe und prüf mal nach warum keine ausgabe kommt
-
Immer wenn ich versuche "start" ohne vorher "cmd" aufzurufen, krieg ich den Fehler, dass er die Datei (start) nicht finden kann. Die gibts ja auch nicht in meinem Verzeichnis. Wie gesagt, ist ja auch ein Konsolenbefehl.
Die Ausgabe mittels dem Code von thealflex funktioniert zwar, aber sie bleibt irgendwo hängen, genauso wie mein Java-Programm.
Ähnliche Themen
-
C#: Beenden von Anwendung verhindern?
Von lordfritte im Forum .NET Windows FormsAntworten: 7Letzter Beitrag: 11.10.07, 16:27 -
externe Anwendung aus Java heraus beenden
Von m4uz im Forum JavaAntworten: 2Letzter Beitrag: 25.09.07, 17:47 -
Konsolenfenster in MFC-Anwendung
Von zonki im Forum VisualStudio & MFCAntworten: 0Letzter Beitrag: 01.04.05, 09:55 -
[C] beenden der anwendung verhindern
Von daleIlowmo im Forum C/C++Antworten: 4Letzter Beitrag: 23.08.03, 14:30 -
beenden der anwendung
Von thecooper im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 26.07.03, 16:04





Zitieren
Login





