0

我從一個進程使用通用代碼做閱讀standardOutput去閱讀:的BufferedReader的readLine()等待處理的inputStream

 Process p = Runtime.getRuntime().exec("gradlew assembleRelease", null , new File(this.workDir));    
     BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 
     String line = null;  
     while ((line = input.readLine()) != null) { 
      standardOutput.writeln(line); 
     } 
     input.close(); 

它完美地工作到現在。它使用我的函數standardOutput.writeln(line)將輸出存儲到一個txt文件中。最近我更新了我的服務器,使用gradle 2.8進行編譯,現在我遇到了一個非常嚴重的問題。當gradle失敗時,input.readLine()函數正在等待。我不明白爲什麼。它卡在那條線上。我找不到任何解釋。我認爲這可能是因爲readLine正在等待/ n停止閱讀,並且有可能新的gradle輸出對此有一些問題,但我不確定這是否是問題。

這個問題怎麼解決?

+0

*「當gradle這個失敗」 *和它告訴你在標準輸出流中,不是錯誤流? – Tom

+0

它被鎖定在這裏,我試圖讀取此代碼後的errorStream,但從未達到該代碼 – NullPointerException

回答

0

溶液最後是閱讀標準輸出和錯誤輸出兩種分離的線程,進程被阻止自身努力在錯誤輸出寫在閱讀標準輸出...