我正在尝试运行这行代码:
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});
以下是一些细节:
答案 0 :(得分: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”作为程序,没有参数。
答案 1 :(得分:1)
ProcessBuilder pb = new ProcessBuilder("nmap", "-sP", "192.168.1.0/24");
Process p = pb.start();
基本上你必须将程序与其参数分开。