2

このコード行を実行しようとしています:

Process p = Runtime.getRuntime().exec(new String[] {"nmap -sP 192.168.1.0/24", g});

上記はこのエラーを与えます:

Exception in thread "main" java.io.IOException: Cannot run program "nmap -sP 192.168.1.0/24": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at Test.main(Test.java:14)

ただし、次のコード行は問題なく動作します。

Process p = Runtime.getRuntime().exec(new String[] {"nmap", g});

ここにいくつかの詳細があります:

  • 「コマンドライン」から完全に機能するnmap 5.51をインストールしました。
  • ウィンドウズ ビスタ.
4

2 に答える 2

3

次のコードを使用する必要があります。

Process p = Runtime.getRuntime().exec(new String[] {"nmap", "-sP", "192.168.1.0/24", g});

これは次と同等です。

"nmap -sP 192.168.1.0/24".split(" ");

配列の最初のエントリは常にファイルで、それ以降はすべてパラメータです。それが行っていたのは、パラメーターなしのプログラムとして「nmap -sP 192.168.1.0/24」を探していたことです。

于 2011-11-04T03:38:25.457 に答える
1
 ProcessBuilder pb = new ProcessBuilder("nmap", "-sP", "192.168.1.0/24");
 Process p = pb.start();

基本的に、プログラムをその引数から分離する必要があります。

于 2011-11-04T03:41:46.737 に答える