SBT中的控制台输入不会回显到屏幕

Wiz*_*ard 11 sbt

我希望我错过了一些东西,因为当程序在sbt中运行时,击键似乎不会回显到屏幕.这是一个例子:

object ConsoleTest extends App {
  println("Enter a line:")
  val input = Console.readLine()
  println("You entered: " + input)
}
Run Code Online (Sandbox Code Playgroud)

当我编译这个简单的代码并从命令行(在sbt之外)运行它时,我看到按键,因为我输入它们进行输入,一切正常.
不幸的是,当我使用sbt编译和运行相同的代码时,它根本不会回显屏幕上的按键.这是令人不安的经历.
还有其他人经历过这种差异吗?
我做了一些搜索,看看是否有其他人遇到这个,以及是否有一个sbt运行时参数允许按键回显.到目前为止没有运气.
我使用的是sbt-0.13.2,上面代码的Java版本也遇到了同样的区别,因此它似乎已经局限于在sbt环境中运行.
任何见解都表示赞赏.

Mik*_*inn 4

这个问题已经有 2.5 年了,仍然没有答案,所以这里:)

我在 Windows 10 上进行了测试,使用 Scala 2.12.1、SBT 0.13.13.1。测试程序在Cmd和WSL的bash下运行良好。

从历史上看,此问题一直是 JLine 问题的症状。您可以使用 Java 系统变量将 JLine 设置覆盖jline.terminalautonone和等值windows这是完整的文档

以下是如何指定各种设置的一些示例:

C:\work\experiments\sbt\optionTest>sbt run
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] Loading project definition from C:\work\experiments\sbt\optionTest\project
[info] Updating {file:/C:/work/experiments/sbt/optionTest/project/}optiontest-build...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to change-me (in build file:/C:/work/experiments/sbt/optionTest/)
[warn] there was one deprecation warning (since 2.11.0); re-run with -deprecation for details
[warn] one warning found
Enter a line:
asdf
You entered: asdf
[success] Total time: 46 s, completed Jan 7, 2017 1:27:27 PM

C:\work\experiments\sbt\optionTest> sbt "-Djline.terminal=none" run
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] Loading project definition from C:\work\experiments\sbt\optionTest\project
[info] Set current project to change-me (in build file:/C:/work/experiments/sbt/optionTest/)
Enter a line:
asdf
You entered: asdf
[success] Total time: 3 s, completed Jan 7, 2017 1:28:12 PM

C:\work\experiments\sbt\optionTest> sbt "-Djline.terminal=windows" run
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] Loading project definition from C:\work\experiments\sbt\optionTest\project
[info] Set current project to change-me (in build file:/C:/work/experiments/sbt/optionTest/)
Enter a line:
asdf
You entered: asdf
[success] Total time: 3 s, completed Jan 7, 2017 1:28:26 PM
Run Code Online (Sandbox Code Playgroud)

  • 也可以与 `sbt "-Djline.terminal=none" console` 一起使用,并且是我从 sbt 控制台找到的自定义 REPL 内容的唯一解决方案。 (2认同)