我需要用Java编写一个简单的命令行应用程序。使用一个负责解析命令的库并处理标志和可选/强制参数之类的东西会很好...
更新
内置TAB完成的东西会特别棒。
答案 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)
当您正在搜索易于开发交互式shell应用程序的库时,我建议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端口。