ProcessBuilder在Process可以找不到指定的文件

Lim*_*ile 4 java process processbuilder

我试图从Java程序运行一个jar文件,我成功使用getRuntime():

Process processAlgo = Runtime.getRuntime().exec("java -jar "+algoPath);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用时,ProcessBuilder我得到了The system cannot find the file specified异常:

ProcessBuilder builder = new ProcessBuilder("java -jar " + algoPath);
Process processAlgo = builder.start();
Run Code Online (Sandbox Code Playgroud)

我试图更改指定文件的位置,并指示其完整路径,但它不起作用.什么可能导致问题?

Mad*_*mer 10

ProcessBuilder 期望它的参数分别传入.

也就是说,对于每个命令和参数,ProcessBuilder期望将其视为单独的参数.

目前你告诉它运行"java -jar algoPath的价值是什么"......从ProcessBuilder概念来看,这是一个无效的命令.

尝试...

ProcessBuilder builder = new ProcessBuilder("java",  "-jar", algoPath);
Process processAlgo = builder.start();
Run Code Online (Sandbox Code Playgroud)

代替.

如果algoPath包含空格(即多于一个参数),则它们也需要分成单独的参数,否则您的程序将不会执行,因为Java会将其algoPath视为单个参数.

查看JavaDocs以获取更多详细信息