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,它可以从“cmd 行”完美运行。
  • 视窗.
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 回答