Java运行进程无法获取标准输出

Java运行进程无法获取标准输出,java,process,Java,Process,我的代码在下面。我正在尝试运行我的ruby脚本并获得标准,在这种情况下,我并不需要标准错误。由于某种原因,我在我的生产主机中根本无法获得任何输出,我只得到空字符串。同样的代码在我的桌面上也能正常工作。如果我自己运行ruby脚本,就可以从中获得输出。我的ruby脚本目前只有一个puts语句。有人知道原因吗?是不是我需要某种块来等待ruby脚本完成 ProcessBuilder processBuilder = new ProcessBuilder(); processBuilder.command

我的代码在下面。我正在尝试运行我的ruby脚本并获得标准,在这种情况下,我并不需要标准错误。由于某种原因,我在我的生产主机中根本无法获得任何输出,我只得到空字符串。同样的代码在我的桌面上也能正常工作。如果我自己运行ruby脚本,就可以从中获得输出。我的ruby脚本目前只有一个puts语句。有人知道原因吗?是不是我需要某种块来等待ruby脚本完成

ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("ruby", "tests.rb");
Process process = processBuilder.start();

BufferedReader bufferReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

StringBuilder output = new StringBuilder();
String line;

while ((line = bufferReader.readLine()) != null) {
    System.out.println("Line is: " + line);
    output.append(line + "\n");
}

bufferReader.close();
return output.toString();

我让redhat机器运行zsh。

您需要关闭进程的输出流(其标准输入),您可能应该合并输出流和错误流。您可能认为您不需要这两个字符,但您可能错了,如果进程产生足够多的未读错误输出,它将暂停。

脚本是否发送任何新行字符?我还建议你尝试一下,看看这个想法。。。