无法使用processBuilder执行linux命令

时间:2014-09-16 07:24:16

标签: java linux

我使用Processbuilder如下:

            List<String> args = initArgs();
            ProcessBuilder pb = new ProcessBuilder(args);
            tdmServerProcess = pb.start();

            handleInfoLog(tdmServerProcess.getInputStream());
            handleErrorLog(tdmServerProcess.getErrorStream());

initArgs方法中,我设置了我想要执行的linux命令,如下所示:

args.add("java -version");
args.add(javaHome + File.separator + "bin" + File.separator + "java");

第一个命令正在成功执行。但第二个是失败并出现以下错误:

  

/ opt / java7 / bin / java:无法执行二进制文件

虽然我有执行权限,但以下是权限位:

-r-xr-xr-x 

我可以从终端执行相同的命令。

2 个答案:

答案 0 :(得分:1)

错误“无法执行二进制文件”表示java文件无效。 也许'java -version'实际上是从你路径中的另一个位置运行java,而/ opt / java7 / bin / java是无效的。尝试手动运行'/ opt / java7 / bin / java',并检查结果。 通过使用运行java代码的用户运行which java来检查路径中java的位置。

答案 1 :(得分:0)

您显然正在尝试执行两个单独的命令,首先是“java -version”,然后是“/ opt / java7 / bin / java”?

这不是它的工作原理。而是附加所有参数并启动一个过程。在您的情况下,命令是“java -version / opt / java7 / bin / java”

尝试在控制台上运行它 - 我打赌你会得到同样的错误。