运行Kshell脚本时,Process构建器返回退出代码127

时间:2015-07-16 18:42:41

标签: java process runtime.exec processbuilder

我正在尝试通过Java流程构建器运行Kshell脚本。在服务器上运行时,脚本本身可以正常工作。但是,当我通过流程构建器运行它时,我将获得退出代码127 - command not found

代码:

ProcessBuilder procBuilder = new ProcessBuilder(command);
procBuilder.directory(new File(codeDir));
proc = procBuilder.start();
errorCode = proc.waitFor();

return errorCode;

我的命令如下:

[/bin/ksh, -c, myscript.ksh, 20150714]

我使用以下命令在服务器上运行脚本:

ksh -x myscript.ksh 20150714

知道这里出了什么问题?

2 个答案:

答案 0 :(得分:1)

放弃了procbuilder并尝试common-exec,它完美无缺。这是我更新的代码:

CommandLine cmdLine = CommandLine.parse(command);

for (String comm : cmd)
{
    cmdLine.addArgument(comm);
}

DefaultExecutor exec = new DefaultExecutor();
exec.setExitValue(0);
exec.setWorkingDirectory(new File(codeDir));
exitCode = exec.execute(cmdLine);

希望将来帮助某人。

答案 1 :(得分:1)

ProcessBuilder 这样做是因为它没有在 PATH 上找到您的脚本。只需使用 ProcessBuilder 执行命令 echo $PATH 。您会看到“它的”PATH 不同。