ProcessBuilder无法找到指定的文件,而Process可以

我正在尝试从Java程序运行jar文件,并且成功使用了getRuntime()

Process processAlgo = Runtime.getRuntime().exec("java -jar "+algoPath);

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

ProcessBuilder builder = new ProcessBuilder("java -jar " + algoPath);

Process processAlgo = builder.start();

我试图更改指定文件的位置,并指出了其完整路径,但无法正常工作。是什么原因引起的?

回答:

ProcessBuilder 希望它的参数分别传递。

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

目前,您正在告诉它运行“ java -jar algoPath的值是什么” …从ProcessBuilder的角度来看,这是无效的命令。

尝试…

ProcessBuilder builder = new ProcessBuilder("java",  "-jar", algoPath);

Process processAlgo = builder.start();

代替。

如果algoPath包含空格(即,一个以上的参数),则也需要将它们分隔为单独的参数,否则您的程序将无法执行,因为Java会将其algoPath视为单个参数。

查看JavaDocs了解更多详细信息

以上是 ProcessBuilder无法找到指定的文件,而Process可以 的全部内容, 来源链接: utcz.com/qa/419355.html

回到顶部