时间:2023-01-02 09:20:54 | 栏目:JAVA代码 | 点击:次
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
在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