有没有办法让akka演员等待用户输入? 它似乎只是自己读取命令行并保持为null。
编辑:添加了代码中有问题的部分,问题是演员不会等待读取行,而是尝试将null放入变量num:def chooser: Receive = {
case ChooseRemote => {
println("Available remotes:> ")
paths.zipWithIndex.map{ case(x, i) => "num: " + i + " " + x }.foreach(println)
println("Enter number:> ")
try {
val num = scala.io.StdIn.readLine().toInt
clientActor ! LookupByLocation(paths(num))
}
catch {
case _: Exception =>
//context.system.scheduler.scheduleOnce(1.second, self, ChooseRemote)
}
}
case Found(actor) => {
context.become(menu(actor))
context.system.scheduler.scheduleOnce(1.second, self, ChooseMenuItem)
}
}
def receive: Receive = chooser
EDIT2:当我把:fork in run:= true时,问题就出现了 在build.sbt文件中。
答案 0 :(得分:0)
在sbt文档中找到答案:
默认情况下,sbt进程的标准输入不会转发到 分叉的过程。要启用此功能,请配置connectInput 设置:运行中的connectInput:= true