Gradle的标准输入默认并不与系统标准输入绑定,需手动设置
参考: https://stackoverflow.com/questions/13172137/console-application-with-java-and-gradle
问题
在Gradle构建的控制台程序中,标准输入readLine总是返回null
原因
Gradle的标准输入默认并不与系统标准输入绑定,需手动设置
解决方法
在build.gradle.kts中添加
tasks.named<JavaExec>("run") { standardInput = System.`in` }
如果需要更干净的输出,可以用
gradle console:run -q –console=plain
解决方法(Groovy)
在build.gradle中添加
run { standardInput = System.in }
补充:在 IDEA 开发环境里使用 jline 无法正常工作的问题处理
现象:在 IDEA 中开发应用,使用 jline 捕获控制台输入时,无法正常运行,主要体现在如下代码在输入回车后无法执行:
ConsoleReader reader = new ConsoleReader();
reader.readLine(“> “);
解决的办法:
在使用 jline 之前,执行如下代码即可:
jline.TerminalFactory.registerFlavor(TerminalFactory.Flavor.WINDOWS, jline.UnsupportedTerminal.class);
也可以在程序启动的命令行里增加参数
-Djline.terminal=jline.UnsupportedTerminal
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)