2013-02-27 109 views
0

我有我的代码如下。我试图运行我的ruby脚本并获取标准,在这种情况下我并不需要标准错误。出于某种原因,我在生产主机中根本无法获得任何输出,而我只能获得空字符串。相同的代码在我的桌面上工作正常。如果我自己运行我的ruby脚本,我可以从中获得输出。我的ruby脚本现在只有一个put语句。任何人都知道原因?是否需要某种程序块才能等待ruby脚本完成?Java运行进程无法取得标准输出

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(); 

我有运行zsh的redhat机器。

+0

你的脚本是否发送任何新的行字符?我也建议你尝试看看这个[示例](http://stackoverflow.com/questions/15101387/how-could-i-execute-a-jar-from-another-program-and-display- the-results-in-anothe/15104408#15104408)的想法... – MadProgrammer 2013-02-27 23:37:18

回答

0

您需要关闭进程的输出流(其标准输入),并且您应该合并输出流和错误流。你可能会认为你不需要它们,但你可能是错的,如果这个过程产生了足够多的未读错误输出,它会停止。

相关问题