我试图从运行一个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的罐子什么都algoPath的值是” ......从ProcessBuilder
的角度来看,是一个无效的命令。
尝试...
ProcessBuilder builder = new ProcessBuilder("java", "-jar", algoPath);
Process processAlgo = builder.start();
代替。
如果algoPath
包含空格(即一个以上参数),他们将需要分离成单个参数为好,否则你的程序将无法执行,因为Java将看到algoPath
作为单个参数。
检查的JavaDoc了解详情
是通过“Java”应该是你的第一个参数,和所有其他的说法已经在其他参数发送。
我有一个问题,在执行这条线“的bash /path/script.sh ARG1 ARG2” ......因为我是路过的第一个参数是“庆典/path/script.sh”,“ARG1”,“ARG3” ...得到例外:命令不受JAVA发现。
当我分隔参数中的每个元素,然后工作得很好。 “庆典”, “/路径/脚本”, “ARG1”, “ARG2”。