是否有一个很好的库可以在scala(或java)应用程序中嵌入命令提示符

bda*_*els 3 java console client scala

我有一个应用程序,我想提示.如果它有帮助,这是一个图形数据库实现,我需要一个提示,就像任何其他数据库客户端(MySQL,Postgresql等).

到目前为止,我有自己的REPL,如下所示:

object App extends Application {
    REPL ! Read
}

object REPL extends Actor {
    def act() {
        loop {
            react {
                case Read => {
                    print("prompt> ")
                    var message = Console.readLine
                    this ! Eval(message)
                }
                case More(sofar) => {
                    //Eval didn't see a semicolon
                    print("    --> ")
                    var message = Console.readLine
                    this ! Eval(sofar + " " + message)
                }
                case Eval(message) => {
                    Evaluator ! Eval(message)
                }
                case Print(message) => {
                    println(message)
                    //And here's the loop
                    this ! Read
                }
                case Exit => {
                    exit()
                }
                case _ => {
                    println("App: How did we get here")
                }
            }
        }
    }
    this.start
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我真的想要有历史的东西.选项卡完成不是必需的.

对好图书馆的任何建议?Scala或Java工作.

为了清楚起见,我不需要REPL来评估我的代码(我用scala得到它!),我也不打算从命令行调用或使用某些东西.我正在寻找一个提示,这是我的客户端应用启动时的用户体验.

Dan*_*ral 6

Scala本身以及许多程序都使用类似readline的库作为其REPL.具体来说,JLine.

我发现了另一个关于此的问题,答案看起来并不乐观.