是否有良好的Java库可以帮助构建命令行应用程序?

时间:2009-01-12 15:24:51

标签: java shell command-line interactive picocli

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

更新

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

10 个答案:

答案 0 :(得分:26)

我使用Apache Commons CLI library进行命令行参数解析。它相当容易使用,并且reasonably good documentation

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

答案 1 :(得分:20)

JLine看起来很有帮助。

  

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

它确实列出了features中的标签页完成情况。

答案 2 :(得分:8)

当您正在搜索易于开发交互式s​​hell应用程序的库时,我建议Cliche

答案 3 :(得分:6)

查看arg4j

答案 4 :(得分:4)

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

简单易用,我会推荐它。

答案 5 :(得分:3)

我广泛使用了Java Simple Argument Parser。它处理各种选项类型,具有精心设计的库(包括编写自定义解析器的选项),并在JavaDocs和online中提供了良好的文档。

我认为您对标签完成的期望将由shell而不是命令行解析库来处理。

答案 6 :(得分:1)

命令行解析有Java port of GNU getopt library。对于命令编辑和TAB完成,有JLine(正如mmyers已经建议的那样)。

答案 7 :(得分:1)

同样值得看--jopt-simple

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

另外,正如Brett所说,选项卡完成通常由shell提供 - 您可以编写shell函数来提供所需的功能。

P.S。很抱歉重复的答案,但这个问题几乎与Java library for parsing command-line parameters?

相同

答案 8 :(得分:0)

我使用过JSAP。我发现它很稳定且记录良好。

我不确定我理解“内置TAB完成”的含义。你能详细说明吗。

答案 9 :(得分:0)

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