【发布时间】:2016-10-25 18:04:58
【问题描述】:
This question 解释了在运行任务时如何使用System.in 来运行项目中的特定类。
但对我来说目前它不起作用:虽然我在build.gradle 中包含了application 插件和以下行:
mainClassName = "misc.StreamsExp"
run{
standardInput = System.in
}
task stream( type: JavaExec, dependsOn: assemble ){
classpath sourceSets.main.runtimeClasspath
main = "misc.StreamsExp"
}
下面的应用代码中带有readLine 的行应该是阻塞的,但不是:
BufferedReader br = new BufferedReader(new InputStreamReader( System.in ));
String enteredLine = "";
while( enteredLine == null || ! enteredLine.equals( "q" )){
System.out.println( "spuds");
enteredLine = br.readLine();
}
...相反,事情只是永远旋转:
土豆
土豆
土豆
...
注意,我使用的是 Windows 10 操作系统,Java 8.91。我已经尝试过 Windows DOS 控制台和 Cygwin。
NB2 当我在 Eclipse(Gradle STS Eclipse 插件)中运行这个 stream 任务时会发生同样的事情......但当我执行 Run as --> Java application 时不会发生同样的事情:然后阻塞会按预期发生。
【问题讨论】:
标签: gradle inputstream blocking system.in