Aus Java "runtime.exec("cmd ... > Umleitung in File funktioniert nicht

Holli100

Grünschnabel
Problem: ich starte aus einer java-GUI Folgendes:

Process p1 = runtime.exec("cmd /c start C:\\Marmitek\\java -jar Holly.jar " + tfDate.getValue() + " > HOLIDAY_eu.XML");

// obige Zeile schreibt zwar die richtige Jahreszahl + die .XML -> ist aber !!!leer!!! (cmd flashed nur kurz)

1.) Das Java-Programm Holly.jar errechnet mir die Feiertage eines Jahres (funktioniert für sich !)
2.) Aus der GUI erhalte ich die über die Tastatur eingegebene Jahreszahl mit: + tfDate.getValue()
3.) mit dem dann folgenden Code: + " > HOLIDAY_eu.XML");
möchte ich das Resultat in die .XML schreiben....aber das CMD Fenster 'flashed' nur kurz,
die HOLIDAY_eu.XML wird zwar erzeugt/geschrieben, ist aber leer.

Wenn ich das Ganze in einer .bat File ausführe funktioniert es
Inhalt der .bat : java -jar Holly.jar 2014 > HOLIDAY_eu.XML
- möchte aber keine extra .bat File ablegen....

Wer kann mir helfen?
Holli100
 
Zuletzt bearbeitet:

vfl_freak

Premium-User
Moin,

bin mir jetzt zwar nicht sicher, ob es Dein Problem wirklich löst, aber erweitere mal den Aufruf so
Java:
String myCMD = ......
Process proc = Runtime.getRuntime().exec( myCMD );
proc.waitFor();

Gruß
Klaus
 

Fabio Hellmann

Erfahrenes Mitglied
Hi,

du kannst auch dem vom Process bereitgestellten InputStream nutzen, um das Schreiben selber zu übernehmen.
Java:
String cmd = .....
Process proc = Runtime.getRuntime().exec(cmd);

BufferedReader in =new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedWriter out =new BufferedWriter(new OutputStreamWriter(new FileOutputStream("HOLIDAY_eu.xml")));
String line;
while((line = reader.readLine()) != null) {
   out.write(line);
}
out.flush();

in.close();
out.close();

Viele Grüße
Fabio
 

Harrier

Erfahrenes Mitglied
Liegt die java.exe unter C:\Marmitek? Und dann bin ich mir noch nicht ganz sicher, wo die Holly.jar liegen muss. Versuch's mal mit nem absoluten Pfad zu Holly.jar
Spontan würde ich mal darauf tippen, dass die Pfade dir da ein Problem machen. Zum Testen kannst du auch mal runtime.exec("cmd /c start cd > test.txt"); ausführen und schauen was du da raus bekommst.