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

溶液最后是阅读标准输出和错误输出两种分离的线程,进程被阻止自身努力在错误输出写在阅读标准输出...