我正在爲命令行應用程序製作前端。它有一個很長的命令行是這個東西simliar:帶有長參數的java runtime.getRuntime.exec(cmd)
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() ;
一切似乎工作,直到我添加了「模式」切換到它。 「模式」開關從命令行執行。我已經嘗試了幾個組合將參數拆分成不執行的數組。我認爲這與「模式」沒有 - 在它前面有關係,而且它沒有 - 在它前面。
我在做什麼錯?
編輯:我忘了提及,我能看到的是:調試器停在不可編譯的源代碼上。我正在使用netbeans,它似乎沒有打印出堆棧跟蹤。它在run.exec(cmd)上停止。 java有什麼問題嗎?
我能夠使用的ProcessBuilder爲了不只是簡單的故障運行...
它解析「命令」就好了,但是當我add「命令模式」
java.io.IOException: Cannot run program "command mode": java.io.IOException: error=2, No such file or directory
所以我猜不能解析。
的Java不應該關心如果您運行的命令有 - 在它的參數或不前 - 它只是在執行命令shell指定它。難道在你的環境中有一些「命令」需要這樣的東西,因爲java運行它的shell的方式沒有被引入? – devyndraen
它確實..當我嘗試「gksudo myCommand參數」時,我學到了這一點。它將每個空間都包裝在自己的引用中。 gksudo例子顯示爲3個單獨的命令。 exec不會在系統上運行命令嗎? – AdamOutler
不完全。我不確定,所以如果我錯了,不要把我的評論標記下來,但是也許試着用\ – iAndr0idOs