ProcessBuilder cannot find the specified file while Process can

java, process, processbuilder

Solution

`ProcessBuilder` expects it's parameters to passed in separately.

That is, for each command and argument, `ProcessBuilder` expects to see it as a separate parameter.

Currently you're telling it to run "java -jar what ever the value of algoPath is"...which from `ProcessBuilder`'s perspective, is an invalid command.

Try...

ProcessBuilder builder = new ProcessBuilder("java",  "-jar", algoPath);
Process processAlgo = builder.start();

Instead.

If `algoPath` contains spaces (ie more then one argument), they will need to be separated into individual parameters as well, otherwise your program will not execute, as Java will see the `algoPath` as a single parameter.

Check the JavaDocs for more details

Problem

I am trying to run a jar file from a Java program and I succeed using `getRuntime()`: ``` Process processAlgo = Runtime.getRuntime().exec("java -jar "+algoPath); ``` However when I try using `ProcessBuilder` I get the `The system cannot find the file specified` exception: ``` ProcessBuilder builder = new ProcessBuilder("java -jar " + algoPath); Process processAlgo = builder.start(); ``` I tried to change the location of the specified file and also indicated its full path but it won't work. What could cause the problem?

Original source

Related problems