Java BufferedReader readLine()正在等待从进程inputStream读取数据
我正在使用通用代码读取流程的标准输出:Java BufferedReader readLine()正在等待从进程inputStream读取数据,java,bufferedreader,readline,runtime.exec,inputstreamreader,Java,Bufferedreader,Readline,Runtime.exec,Inputstreamreader,我正在使用通用代码读取流程的标准输出: Process p = Runtime.getRuntime().exec("gradlew assembleRelease", null , new File(this.workDir)); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line
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(第行)将输出存储到txt文件中。最近我更新了我的服务器,用Gradle2.8进行编译,现在我遇到了一个非常严重的问题。当gradle失败时,input.readLine()函数将永远等待。我不明白为什么。它卡在那条线上了。我找不到任何解释。我认为这可能是因为readLine正在等待a/n停止读取,新的gradle输出可能存在一些问题,但我不确定这是否是问题所在
如何解决这个问题 最终的解决方案是在两个分开的线程中读取标准输出和错误输出,进程在读取标准输出时试图写入错误输出…“当gradle失败时”,它告诉您在标准输出流中,而不是在错误流中?它被锁定在这个,我正在尝试读取此代码后的错误流,但从未到达该代码