有没有好的Java库可以帮助构build命令行应用程序?

我需要用Java编写一个简单的命令行应用程序。 这将是很好的使用一个图书馆,照顾parsing命令,照顾像标志和可选/强制参数的东西…

UPDATE

内置TAB完成的东西会特别好。

我已经使用Apache Commons CLI库进行命令行参数分析。 这是相当容易使用,并有相当好的文件 。

您select哪个库可能归结为您喜欢哪种types的选项(“–gnu-style”或“-javac-style”)。

更新: picocli TAB完成最近变得可用,可能是有趣的。 不知道有任何其他命令行parsing库提供OP中请求的命令行完成。

JLine看起来很有帮助。

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

它确实列出了其function的标签完成。

当你在寻找一个简化开发交互式s​​hell应用程序的库时,我会build议Cliche 。

看看arg4j 。

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

轻而易用,我会推荐它。

我广泛使用了Java Simple Argument Parser 。 它处理各种选项types,devise良好的库和库(包括编写自定义parsing器的选项),并在JavaDocs和在线提供良好的文档。

我认为你完成制表符的愿望将由shell而不是命令行parsing库来完成。

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

我已经使用JSAP 。 我发现它是稳定和有据可查的。

我不确定我是否理解“内置TAB完成”的含义。 你能详细说一下吗?

这也是值得一看的- 简单 。

它试图遵守POSIX getopt()和GNU getopt_long()的命令行选项语法。 它似乎有一些社区的牵引力,特别是OpenJDK的命令行parsinglib的select。

另外,正如Brett所说,标签完成通常是由你的shell提供的 – 你将编写shell函数来提供所需的function。

ps对不起,重复的答案,但这个问题是几乎相同的Java库parsing命令行参数?

我试了几个库,最后使用argparse4j 。 这是一个非常好的Python的Java端口。