是否有有助于构建命令行应用程序的良好 Java 库? [关闭]
Posted
技术标签:
【中文标题】是否有有助于构建命令行应用程序的良好 Java 库? [关闭]【英文标题】:Are there good Java libraries that facilitate building command-line applications? [closed] 【发布时间】:2010-09-30 22:44:42 【问题描述】:我需要用 Java 编写一个简单的命令行应用程序。使用一个负责解析命令并负责标志和可选/强制参数之类的库会很好......
更新
具有内置 TAB 补全功能的东西会特别棒。
【问题讨论】:
通常 CLI 意味着您的应用程序从命令行获取参数以确定以何种方式运行。根据您的更新,您的意思是您想在您的 java 应用程序中拥有一个交互式 shell 风格的进程吗? (像 irb?) 是的,我确实...你是对的 irb 是交互式红宝石。我认为您会从不使用“命令行”或“cli”短语的情况下重新提出问题中受益。也许“是否有库可以在 java 中创建交互式 shell?”并举例说明您的应用的用法。 Spring Shell 看起来不错。 这是一个很好的问题,值得关注softwarerecs.stackexchange.com。 【参考方案1】:我使用Apache Commons CLI library 进行命令行参数解析。它相当容易使用并且有reasonably good documentation。
您选择哪个库可能取决于您喜欢哪种样式的选项(“--gnu-style”或“-javac-style”)。
【讨论】:
【参考方案2】:JLine 看起来很有帮助。
JLine 是一个用于处理控制台输入的 Java 库。它的功能类似于 BSD 编辑线和 GNU 阅读线。熟悉现代 shell(例如 bash 和 tcsh)的 readline/editline 功能的人会发现 JLine 的大多数命令编辑功能都很熟悉。
它确实在其features 中列出了选项卡完成。
【讨论】:
+1; readline 是我首先想到的,这似乎是 Java 的等价物。【参考方案3】:当您正在寻找可简化交互式 shell 应用程序开发的库时,我建议您使用 Cliche。
【讨论】:
cliche
非常简单但非常强大。我推荐它。
是否支持密码屏蔽【参考方案4】:
在我们公司,我们使用JewelCli,它使用带注释的 Java 接口定义以声明式的方式描述命令行接口。
轻巧易用,我会推荐它。
【讨论】:
jewelcli 没有制表符补全,它只是一个基本(但很棒)的命令行参数解析器。【参考方案5】:我已经广泛使用了Java Simple Argument Parser。它处理各种选项类型,具有精心设计的库(包括编写自定义解析器的选项),并在 JavaDocs 和 online 中提供了良好的文档。
我认为你对制表符完成的渴望将由 shell 而不是命令行解析库来处理。
【讨论】:
【参考方案6】:有一个Java port of GNU getopt library 用于命令行解析。对于命令编辑和 TAB 完成,有 JLine(正如 mmyers 已经推荐的那样)。
【讨论】:
【参考方案7】:--jopt-simple 也值得一看。
它“尝试遵守 POSIX getopt() 和 GNU getopt_long() 的命令行选项语法。” 它似乎有一些社区吸引力,特别是作为OpenJDK 选择的命令行解析库。
另外,正如 Brett 所提到的,制表符补全通常由您的 shell 提供 - 您可以编写 shell 函数来提供所需的功能。
附言抱歉重复的答案,但这个问题与Java library for parsing command-line parameters?几乎相同
【讨论】:
【参考方案8】:我尝试了几个库并最终使用了argparse4j。这是 Python 的 argparse 的一个非常好的 Java 端口。
【讨论】:
【参考方案9】:我用过JSAP。我发现它很稳定并且有据可查。
我不确定我理解您所说的“内置 TAB 完成”是什么意思。能详细点吗。
【讨论】:
以上是关于是否有有助于构建命令行应用程序的良好 Java 库? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章