gpt4 book ai didi

gradle - 无法让Gradle使用System.in

转载 作者:行者123 更新时间:2023-12-03 04:01:17 24 4
gpt4 key购买 nike

This question解释了在运行任务以在项目中运行特定类时如何使用System.in

但是对于我来说,当前它不起作用:尽管我在application中包括了build.gradle插件和以下行:

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();
}

...相反,事情只会永远旋转:

spuds
spuds
spuds
...



注意:我在使用Java 8.91的Windows 10操作系统上。我已经尝试了Windows DOS控制台和Cygwin。
NB2当我在Eclipse(Gradle STS Eclipse插件)中运行此 stream任务时,发生了相同的事情……但是当我执行 Run as --> Java application时却没有发生:然后,按预期发生了阻塞。

最佳答案

嗯...其中之一就是您认为自己将永远被绊倒的地方,您在发布SO后2分钟便找到了解决方案!我会把它留给别人

答案是将standardInput =行放在您正在运行的任务中,如下所示:

task stream( type: JavaExec, dependsOn: assemble ){
standardInput = System.in
classpath sourceSets.main.runtimeClasspath
main = "misc.StreamsExp"
}

奇怪的是,在Windows DOS终端中,提示符“spuds”后面是

> Building 88% > :stream



...这是我提到的问题中提到的已知“错误”。在Cygwin中,不会发生此错误。

CAVEAT:在Windows DOS终端和Cygwin终端中都可以使用...在Eclipse中运行定制的 stream任务时, 不能解决的问题!

关于gradle - 无法让Gradle使用System.in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40246732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com