Scala 使用sbt运行或sbt控制台时BufferedReader.readLine出现问题
我的问题很快,我正在使用一个小控制台来读取输入,然后调用适当的代码。我使用的是sbt,我遇到了一个问题,当我在sbt运行程序后,在sbt控制台内,甚至在普通的scala解释器中尝试读取输入时 提示看起来只是挂起,但如果我点击return,它实际上会在中读取输入。尽管shell的缓冲区仍然为空。这是我一直在尝试的通用代码,它给了我这个问题Scala 使用sbt运行或sbt控制台时BufferedReader.readLine出现问题,scala,io,sbt,read-eval-print-loop,Scala,Io,Sbt,Read Eval Print Loop,我的问题很快,我正在使用一个小控制台来读取输入,然后调用适当的代码。我使用的是sbt,我遇到了一个问题,当我在sbt运行程序后,在sbt控制台内,甚至在普通的scala解释器中尝试读取输入时 提示看起来只是挂起,但如果我点击return,它实际上会在中读取输入。尽管shell的缓冲区仍然为空。这是我一直在尝试的通用代码,它给了我这个问题 import java.io._ val s = new BufferedReader(new InputStreamReader(System.in))
import java.io._
val s = new BufferedReader(new InputStreamReader(System.in))
val line = s.readLine
println(line)
有人知道这是为什么吗?如果有,有办法解决吗?我希望能够看到当我从sbt运行程序时输入的内容。如果在shell中看不到我的输入,那么我的项目的测试和开发就不那么愉快了。这确实是一个Java API问题,尽管是在Scala中。BufferedReader.readLine()将使用您从System.in键入的所有字符,直到它有一整行,此时它将返回您所说的行 在Java中,使用原始Java.io类很难进行控制台输入。在Java6之前,我已经看到了一些混乱的解决方案,但幸运的是,在该版本中引入了一个新类,使其更容易实现:。我想这就变得很简单了
val line = System.console.readLine
println(line)
当我尝试从sbt中运行代码时,会出现空指针异常。具体而言,
控制台
为空。