2013-02-27 29 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

您需要關閉進程的輸出流(其標準輸入),並且您應該合併輸出流和錯誤流。你可能會認爲你不需要它們,但你可能是錯的,如果這個過程產生了足夠多的未讀錯誤輸出,它會停止。

相關問題