【发布时间】:2016-02-24 15:24:02
【问题描述】:
我正在使用通用代码从进程中读取标准输出:
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 输出可能存在一些问题,但我不确定这是否是问题。
如何解决这个问题?
【问题讨论】:
-
“当 gradle 失败时” 它告诉你在标准输出流中,而不是错误流?
-
它被锁定在此,我试图在此代码之后读取 errorStream,但从未到达该代码
标签: java bufferedreader readline runtime.exec inputstreamreader