ProcessBuilder 找不到指定的文件,而 Process 可以 [英] ProcessBuilder cannot find the specified file while Process can

查看:177
本文介绍了ProcessBuilder 找不到指定的文件,而 Process 可以的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to run a jar file from a Java program and I succeed using getRuntime():

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

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

However when I try using ProcessBuilder I get the The system cannot find the file specified exception:

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

我试图更改指定文件的位置并指出其完整路径,但它不起作用.什么可能导致问题?

I tried to change the location of the specified file and also indicated its full path but it won't work. What could cause the problem?

推荐答案

ProcessBuilder 期望它的参数单独传入.

ProcessBuilder expects it's parameters to passed in separately.

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

That is, for each command and argument, ProcessBuilder expects to see it as a separate parameter.

目前您告诉它运行java -jar algoPath 的值是什么"...从 ProcessBuilder 的角度来看,这是一个无效的命令.

Currently you're telling it to run "java -jar what ever the value of algoPath is"...which from ProcessBuilder's perspective, is an invalid command.

试试...

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

相反.

如果 algoPath 包含空格(即多于一个参数),它们也需要被分成单独的参数,否则你的程序将无法执行,因为 Java 会看到 algoPath 作为单个参数.

If algoPath contains spaces (ie more then one argument), they will need to be separated into individual parameters as well, otherwise your program will not execute, as Java will see the algoPath as a single parameter.

查看 JavaDocs 了解更多详情

这篇关于ProcessBuilder 找不到指定的文件,而 Process 可以的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆