用于为Java应用程序构建交互式shell的库

我正在寻找Java的库,这将允许我创建一个交互式shell。 我做了一些搜索,并没有发现很多。 我发现的大多数是用于向我的应用程序添加命令参数解析的库,这对我没什么帮助。

我找到的最好的领导是一个名为Cliche的库,它完全符合我的需要。 问题是它太简单了。 我正在寻找更具定制性的东西。

有没有人遇到过更高级的东西?

要考虑的选项:

  • javacurses / JCurses – 一个基于控制台的窗口工具包,类似于UNIX curses设计
  • 如果您想在Swing GUI窗口中使用控制台样式的视图/输出,则swing-console可能是合适的。 你可以使用它来构建一个交互式shell。
  • JLine – 类似于GNU readline的控制台输入库
  • 一些JVM语言提供了一个交互式REPL环境 ,可以用作交互式shell,例如Clojure

根据这个问题, JLine可以很好的尝试。

JLine的特点

  • 命令历史记录 – 之前输入的行可以被调用和编辑,并且可以保留以便它们可用
    跨程序会话。
  • 行编辑 – JLine允许完全编辑当前命令行,并尝试尽可能多地模仿GNU Readline的行为,包括支持emacs和vi键映射。
  • 完成 – JLine提供了一个可插入的机制来实现命令行选项卡完成(当然,完成可以绑定到您希望的任何键)。
  • 自定义键绑定 – 可以任意重新映射键以执行特定操作,JLine会尝试遵守现有readline .inputrc文件中设置的任何映射。
  • 字符屏蔽 – 可以从用户收集输入而无需任何视觉反馈。 这对提示输入密码很有用。
  • 99.99%Java – JLine的大部分都是Java,仅使用Jansi项目提供的一些本机代码,
    支持Windows。

我们正在使用Spring shell ,它对我们来说非常有用。 它的一些function:

  • 一个简单的,注释驱动的编程模型,用于提供自定义命令

  • 使用Spring的类路径扫描function作为a的基础
    命令插件策略和命令开发

  • Roo Shell的inheritancefunction,最显着的是选项卡完成,着色和脚本执行。

  • 自定义命令提示符,标题,shell历史文件名。