这是我的代码:
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("cmd.exe /c kotlinc -script " + script.getAbsolutePath());
process.waitFor();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while ((line = bufferedReader.readLine()) != null){
System.out.println(line);
}
我想要的只是正在运行的脚本的实时输出。有人知道该怎么做吗?先感谢您!
您的process.waitFor()
呼叫是阻塞呼叫,并且仅在进程结束时才解除阻塞,从而阻止您的流正常工作,因为流将在进程结束时关闭。
在调用in的单独线程中从流中.waitFor()
读取,或者在调用之前从流中读取.waitFor()
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("cmd.exe /c kotlinc -script " + script.getAbsolutePath());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while ((line = bufferedReader.readLine()) != null){
System.out.println(line);
}
int exitValue = process.waitFor();
顺便说一句,我会使用ProcessBuilder来获取流程,而不是 Runtime.getRuntime()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句