42

我需要用 Java 编写一个简单的命令行应用程序。使用一个负责解析命令并处理标志和可选/强制参数之类的库会很好......

更新

具有内置 TAB 完成功能的东西会特别棒。

4

9 回答 9

27

我使用Apache Commons CLI 库进行命令行参数解析。它相当容易使用并且有相当好的文档

您选择哪个库可能取决于您喜欢哪种样式的选项(“--gnu-style”或“-javac-style”)。

于 2009-01-12T15:30:04.547 回答
20

JLine看起来很有帮助。

JLine 是一个用于处理控制台输入的 Java 库。它的功能类似于 BSD editline 和 GNU readline。熟悉现代 shell(例如 bash 和 tcsh)的 readline/editline 功能的人会发现 JLine 的大多数命令编辑功能都很熟悉。

它确实在其功能中列出了选项卡完成。 

于 2009-01-12T16:54:31.177 回答
8

当您正在寻找可以简化开发交互式 shell 应用程序的库时,我建议您使用Cliche

于 2012-06-07T00:52:20.643 回答
4

在我们公司,我们使用JewelCli,它使用带注释的 Java 接口定义来以声明式风格描述命令行接口。

轻巧易用,我会推荐它。

于 2009-01-12T16:57:19.347 回答
3

我已经广泛使用了Java Simple Argument Parser。它处理各种选项类型,具有精心设计的库(包括编写自定义解析器的选项),并在 JavaDocs 和在线.

我认为您对制表符完成的渴望将由 shell 而不是命令行解析库来处理。

于 2009-01-13T05:05:50.843 回答
1

有一个用于命令行解析的 GNU getopt 库的 Java 端口。对于命令编辑和 TAB 完成,有 JLine(正如 mmyers 已经推荐的那样)。

于 2009-01-13T04:46:58.180 回答
1

也值得一看--jopt-simple

它“尝试尊重 POSIX getopt() 和 GNU getopt_long() 的命令行选项语法。” 它似乎有一些社区吸引力,特别是作为OpenJDK选择的命令行解析库。

此外,正如 Brett 所提到的,制表符补全通常由您的 shell 提供——您将编写 shell 函数来提供所需的功能。

ps 抱歉重复的答案,但这个问题几乎与用于解析命令行参数的 Java 库相同?

于 2011-09-09T22:14:12.123 回答
1

我尝试了一些库并最终使用了argparse4j这是 Python 的argparse的一个非常好的 Java 端口。

于 2013-02-02T16:14:51.793 回答
0

我用过JSAP。我发现它很稳定并且有据可查。

我不确定我理解您所说的“内置 TAB 完成”是什么意思。能否详细说明。

于 2009-01-13T05:10:06.480 回答