java runtime.getRuntime.exec( cmd ) mit long-Parametern

Ich mache ein frontend für eine command line app. Es hat eine sehr lange Kommandozeile ist etwas simliar auf diese:

public String liveShellCommand(){

  String cmd="command mode --parameter arg --parameter2 arg2 --parameter3 arg3";

  Runtime run = Runtime.getRuntime() ;
  Process pr ;
    try {
       log.progress("sending command: " +cmd);       
       pr = run.exec( cmd );
       pr.waitFor() ;

Alles scheint zu funktionieren, bis ich die "mode" - Schalter hinein. Die "mode" - Schalter führt Sie von der Befehlszeile aus. Ich habe versucht ein paar Kombinationen, die Aufteilung der Parameter in ein array, welches nicht durchführen. Ich denke es hat etwas zu tun mit "Modus" nicht mit einem -- vor, und es kann nicht ein -- davor.

Was mache ich falsch?

edit: ich vergaß zu erwähnen, dass alle, die ich sehen kann, ist diese: Debugger angehalten, auf uncompilable source code. Ich bin mit netbeans und es scheint sich nicht um print out ein stack-trace. Es Stoppt auf der Flucht.exec(cmd). Gibt es etwas falsch mit java?

Konnte ich den ProcessBuilder um es zu starten, ohne einfach nur versagt...

Analysiert "Befehl" ganz gut, aber wenn ich "Befehl-Modus"

 java.io.IOException: Cannot run program "command mode": java.io.IOException: error=2, No such file or directory

Also kann es nicht analysieren, denke ich.

  • Java sollte nicht egal, wenn der Befehl, den Sie ausgeführt hat -- vor seiner Parameter oder nicht - es ist nur die Ausführung des Befehls in der shell, wie Sie Sie angeben. Könnte es sein, dass es etwas mit diesem "Befehl" erfordert in Ihrer Umgebung, die nicht immer gezogen, weil der Weg von java ausgeführt wird shell?
  • Es nimmt.. ich erfuhr das, als ich versucht habe "gksudo myCommand parameter" Es wird jeder Raum in seinem eigenen Angebot. die gksudo Beispiel zeigt, wie 3 getrennte Befehle. Nicht die exec ausführen des Befehls auf dem system?
  • Nicht genau. Ich bin mir nicht sicher, also nicht daneben mein Kommentar unten, wenn ich falsch bin, aber vielleicht versuchen Sie entkommen den Raum mit \
  • das funktioniert entweder nicht.
  • Yep, ich hätte meine due diligence vor dem posten mein Kommentar. Wie Sie sagen, es wird jeder parameter durch ein Leerzeichen getrennt in eigenen string. Haben Sie versucht, ein array aus den Parametern und der übergabe an die überladene exec aufrufen? Auch, ich habe gesehen, eine Menge von Erwähnung der ProcessBuilder Klasse - vielleicht würde dir helfen (wenn du mit Java 1.5+).
  • Ich eigentlich nur verbrachte die Letzte Stunde lernen und über den Prozess-generator. Es bringt mich weiter. aber keine Zigarre... danke.. ich aktualisiert die erste post.. ich war in der Lage, eine Fehlermeldung erhalten, mindestens.

InformationsquelleAutor AdamOutler | 2011-06-22
Schreibe einen Kommentar