Java Java für Command-Line Commands nicht richtig aus

mausweazle

Lt. Commander
Registriert
Mai 2008
Beiträge
1.633
Hallihallo liebe Community,

der Titel ist leider etwas wage geraten, denn ich wusste nicht, wie ich es kurz beschreiben soll.
Ich führe aus Java ein Python-Skript aus und zwar indem ich Java einen Command-Line Befehl ausführen lasse.

Der Befehl, der ausgeführt wird, sieht ungefähr so aus:
Code:
python </absolutepath/script_name> -i </absolutepath/input> -o </absolutepath/output> -m </absolutepath/model> -p </absolutepath/parameter_file>

Der Befehl wird in Java so ausgeführt:
Code:
Process p = Runtime.getRuntime().exec(cmdCommand)

Ich sehe auch am Output des Java-Programms, dass das Python-Skript ausgeführt wird, aber die Outputdatei <output> wird nicht erstellt. Der CMD-Befehl wird in Java automatisiert erstellt und den habe ich mir mal ausgeben lassen. Anschließend habe ich den einfach per Copy&Paste in die Command-Line eingefügt und dann werden die Output-Dateien auch erstellt, aber eben nicht, wenn ich ihn über Java ausführen lasse.

Woran kann das liegen?

Ich bedanke mich schon im Voraus für Hilfe!

Mausweazle

// Edit: Gerade den Schreibfehler im Titel entdeckt... Bitte seht darüber hinweg :)
 
Versuch es mal so
Code:
        ProcessBuilder procBuilder = new ProcessBuilder("python", "/abs/path/script", "-i", "/abs/path/input", "-o", "/abs/path/output", "-m", "/abs/path/model", "-p",
                "/abs/path/paramFile");
        System.out.println(procBuilder.command());

        //        try {
        //            procBuilder.start();
        //        } catch (IOException e) {
        //            e.printStackTrace();
        //        }
Wenn der output sinnvoll aussieht, dann entferne die Kommentierung und schau mal, ob es damit funktioniert.
 
Versuchs mal mit

Code:
Process p = Runtime.getRuntime().exec("cmd /c"+cmdCommand);

Ansonsten kannst du dir ja mal den Stream vom CMD holen und Ausgeben, vllt hilft das weiter...
 
Zurück
Oben