的ProcessBuilder无法找到指定的文件,而过程(ProcessBuilder cannot

2019-07-20 07:20发布

我试图从运行一个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();

我试图改变指定文件的位置,也表示它的完整路径,但它不会工作。 什么会导致这个问题?

Answer 1:

ProcessBuilder预计它的参数在单独通过。

也就是说,每个命令和参数, ProcessBuilder希望看到它作为一个单独的参数。

目前,你告诉它运行“Java的罐子什么都algoPath的值是” ......从ProcessBuilder的角度来看,是一个无效的命令。

尝试...

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

代替。

如果algoPath包含空格(即一个以上参数),他们将需要分离成单个参数为好,否则你的程序将无法执行,因为Java将看到algoPath作为单个参数。

检查的JavaDoc了解详情



Answer 2:

是通过“Java”应该是你的第一个参数,和所有其他的说法已经在其他参数发送。

我有一个问题,在执行这条线“的bash /path/script.sh ARG1 ARG2” ......因为我是路过的第一个参数是“庆典/path/script.sh”,“ARG1”,“ARG3” ...得到例外:命令不受JAVA发现。

当我分隔参数中的每个元素,然后工作得很好。 “庆典”, “/路径/脚本”, “ARG1”, “ARG2”。



文章来源: ProcessBuilder cannot find the specified file while Process can