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.
È stato utile?

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
scroll top