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

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

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

但是当我尝试使用ProcessBuilder我得到的The system cannot find the file specifiedexception:

 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以获取更多详细信息

是的,“java”应该是您的第一个参数,并且每个其他参数都必须在其他参数中发送。

我在执行这行“bash /path/script.sh arg1 arg2”时遇到了问题…因为我传递的第一个参数是“bash /path/script.sh”,“arg1”,“arg3”……获得exception:JAVA找不到命令。

当我在每个元素中分离参数时,工作正常。 “bash”,“/ path / script”,“arg1”,“arg2”。