2012-03-22 132 views
0

我能夠成功地執行在Windows操作系統上:的ProcessBuilder在OSX

builder = new ProcessBuilder("cmd.exe", "/c", "nmap " + ipRange, "&cd");

但這在OSX失敗:

builder = new ProcessBuilder("/usr/local/bin/nmap", ipRange);

與錯誤:

「啓動Nmap 5.51(http://nmap.org)於2012-03-22 09:51 PDT

主機表達式無效:127.0.0.1 -p T:80 - 冒號只允許在IPv6地址中,然後您需要-6開關

QUITTING!「

什麼是創建ProcessBuilder for OSX的正確方法? 謝謝

回答

3

我猜你試圖通過兩個單獨的參數作爲一個字符串在ipRange。 ProcessBuilder可能會用引號將ipRange字符串包裝起來,並弄亂命令語法。您需要添加的所有參數分別

不喜歡這樣的:

new ProcessBuilder("/usr/local/bin/nmap", "-foo foo -bar bar"); 

但這樣的:

new ProcessBuilder("/usr/local/bin/nmap", "-foo", "foo", "-bar", "bar"); 
+0

非常感謝你,是解決它。任何想法,爲什麼它不是在Windows上的問題? – user1286505 2012-03-22 21:23:01

+0

不同的操作系統有不同的命令行語法 – 2012-03-23 07:25:46

+0

基本上,如果你以前的版本在Windows上工作,你的幸運。但是,如果分別指定每個參數,ProcessBuilder僅用於工作。不幸的是,這些文檔並不具體。 – 2012-03-23 07:28:52