2012-03-22 8 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スイッチが必要です

終了!

ProcessBuilder for OSXを作成する正しい方法は何ですか? ありがとう

答えて

3

ipRangeに1つの文字列として2つの個別のパラメータを渡そうとしています。 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

+0

異なるOSは異なるコマンドライン構文を持っています –

+0

基本的に、以前のバージョンがWindowsで動作していた場合は、あなたの運が良いです。しかし、ProcessBuilderは、各パラメータを個別に指定した場合にのみ機能します。ドキュメントは、残念なことにこのことに特化していません。 –

関連する問題