Exe datei aufrufen

redbomber

Bekanntes Mitglied
Ich versuche gerade von Java aus eine *.exe datei auszuführen. Wie in anderen Beiträgen beschrieben gehe ich dabei wie folgt vor:

Java:
public static void main(String[] args){
		
		Runtime runtime = Runtime.getRuntime();
		Process javap;
		try {
			commandArray = new String[] { "*.exe", "Argument", aFile };
			javap = runtime.exec(commandArray);
			writeProcessOutput(javap);
			javap.destroy();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
}

static void writeProcessOutput(Process process) throws Exception {
		InputStreamReader tempReader = new InputStreamReader(
				new BufferedInputStream(process.getInputStream()));
		BufferedReader reader = new BufferedReader(tempReader);
		while (true) {
			String line = reader.readLine();
			if (line == null)
				break;
			System.out.println(line);
		}
}

Das ganze soll eine Datei entpacken. Machts aber nicht.
Gebe ich dasselbe in das cmd Konsole ein funktioniert es aber problemlos.
Die Dateien, sowie der Pfad in Java sind korrekt. Ändere ich diese im Code bekomme ich die entsprechenden Fehlermeldungen (File not found...)
Möchte ich mit writeProcessOutput(Process process) mir die Ausgabe vom Prozess ausgeben lassen, so
bleibt das Programm in Zeile:
String line = reader.readLine();
hängen.

Woran liegt bei mir das Problem?
Kann es daran liegen dass die Berechtigung fehlt die Datei auszuführen (benutze Vista. Aber da sollte doch dann eine entsprechende Fehlermeldung kommen).

Warum bleibt das Programm in Zeile:
String line = reader.readLine();
hängen? Sollte der Prozess nichts zurück liefern? (aber dann würde die Schleife ja abbrechen). Sollte der Prozess einfach einen endlosen String zurückliefern? Wenn ja warum?

Vielleicht habt ihr eine Idee?
 
Es kann gut sein, dass 7z.exe keine Ausgabe liefert.
- versuche mit
Code:
-o
den Output Pfad anzugeben

Welche Ausgabe erwartest du denn?
 
Du meinst den output pfad, wohin die datei extrahiert werden soll?

Doch es sollte eine Ausgabe erscheinen, zumindest erhalte ich eine Ausgabe wenn ich dasselbe Kommando per Konsole eingebe.
Da kommt irgend eine Meldung über
7Zip by Igor...

Zudem erscheint nirgendwo die Datei die ich entpacken wollte. Ich versuche mal den Pfad noch mit anzugeben, vielleicht wird es ja irgendwo hin deinstalliert.

Dennoch...
mich wundert es, dass mein Programm in Zeile 21 (siehe Code oben) hängen bleibt.
Das spricht doch dafür dass irgend etwas schief gegangen ist oder`?
 
Also wenn ich mit -oC:\tmp den Pfad zum entpacken angebe, dann funktioniert es leider auch nicht.
Also bei Eingabe in die Konsole funktioniert es, aber von meinem Java Programm aus klappt es nicht.
 
Hi,

ich hatte mal folgendes Problem:
  • eine exe gab viele fehlermeldungen aus
  • ich hatte aber den error stream -
    Code:
    process.getErrorStream()
    - mit keiner Ausgabe verknüpft
  • mein java Programm blieb dann auch immer hängen
  • erst als ich den error stream ebenfalls mit einer Ausgabe verknüpft hatte, liefe das java Programm
  • dann konnte ich die Fehler im Aufruf der exe Datei korrigieren, da nun die Fehlermeldungen sichtbar waren

Grüße Momolin
 

Zurück
Oben