我正在尝试从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();
我尝试更改指定文件的位置,并指示其完整路径但不起作用。什么可能导致问题?
答案 0 :(得分:9)
ProcessBuilder
期望它的参数分别传入。
也就是说,对于每个命令和参数,ProcessBuilder
都希望将其视为一个单独的参数。
目前你告诉它运行“java -jar algoPath的价值是什么”......从ProcessBuilder
的角度来看,这是一个无效的命令。
...试
ProcessBuilder builder = new ProcessBuilder("java", "-jar", algoPath);
Process processAlgo = builder.start();
相反。
如果algoPath
包含空格(即多于一个参数),则需要将它们分成单独的参数,否则您的程序将无法执行,因为Java会将algoPath
视为单个参数。
查看JavaDocs了解详情
答案 1 :(得分:0)
是的,“java”应该是你的第一个参数,而其他每个参数都必须在其他参数中发送。
执行此行时遇到问题“bash /path/script.sh arg1 arg2”... 因为我传递的第一个参数是“bash /path/script.sh”,“arg1”,“arg3”......得到异常:JAVA找不到命令。
当我将每个元素的参数分开时,工作正常。 “bash”,“/ path / script”,“arg1”,“arg2”。