Java Runtime.getRuntime().exec on Windows error
-
21-02-2021 - |
Domanda
I am trying to run this line of code:
Process p = Runtime.getRuntime().exec(new String[] {"nmap -sP 192.168.1.0/24", g});
The above gives this error:
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)
However, this line of code works fine:
Process p = Runtime.getRuntime().exec(new String[] {"nmap", g});
Here are some particulars:
- Installed nmap 5.51 which works perfectly from the 'cmd line'.
- Windows Vista.
Soluzione
You should be using this code:
Process p = Runtime.getRuntime().exec(new String[] {"nmap", "-sP", "192.168.1.0/24", g});
this is equivalent to:
"nmap -sP 192.168.1.0/24".split(" ");
The first entry in the array is always the file, and anything after that is parameters. What it was doing was looking for "nmap -sP 192.168.1.0/24" as a program, with no parameters.
Altri suggerimenti
ProcessBuilder pb = new ProcessBuilder("nmap", "-sP", "192.168.1.0/24");
Process p = pb.start();
Basically you have to separate the program from its arguments.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow