【问题标题】:Libraries for constructing an interactive shell for Java application [closed]用于为 Java 应用程序构建交互式 shell 的库 [关闭]
【发布时间】:2012-12-14 08:58:08
【问题描述】:

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

我找到的最好的线索是一个名为Cliche 的库,它完全符合我的需要。问题是它太简单了。我正在寻找具有更多自定义功能的东西。

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

【问题讨论】:

  • 如果你真的很喜欢定制,你可能想看看 parboiled。

标签: java libraries


【解决方案1】:

考虑的选项:

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

【讨论】:

  • 我之前在其他语言中遇到的 Curses 对我来说是一个巨大的痛苦。但为了获得我正在寻找的功能,我可能不得不将其视为一种选择。
  • beanshell.org 也增加了一个不错的交互环境。
  • 就我所读到的有关 Beanshell 的内容而言,这似乎有点矫枉过正。它是 Java 语言的完整脚本。
【解决方案2】:

我们正在使用Spring shell,它对我们非常有效。它的一些特点:

  • 一个简单的、注释驱动的、用于贡献自定义的编程模型 命令

  • 使用 Spring 的类路径扫描功能作为基础
    命令插件策略与命令开发

  • 继承 Roo Shell 功能,尤其是制表符补全, 着色和脚本执行。

  • 自定义命令提示符、横幅、shell 历史文件名。

【讨论】:

  • 理论上是一个不错的库,但对于未来的读者来说不是一个小库:Spring shell 处于非活动状态,因此不会得到任何更新。
【解决方案3】:

根据this QuestionJLine可以试试看。

Features of JLine

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

【讨论】:

  • 根据我正在阅读的内容,JLine 看起来效果很好。问题是图书馆的文档似乎非常稀缺。也没有那么大的问题,但我似乎找不到任何使用 JLine 的例子。
  • 他们的例子似乎不起作用。它没有给我提示,而是运行和停止。如果我能与开发人员取得联系并获得更多关于如何使用它的信息,我认为 Jline 会为我工作。他们似乎没有 JLine2 的 JavaDoc,但 Jline1 有一个。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2010-10-06
  • 2012-08-17
  • 2010-12-06
  • 2011-10-26
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 2019-11-03
相关资源
最近更新 更多