我需要用Java编写一个简单的命令行应用程序。使用一个负责解析命令的库并处理标志和可选/强制参数之类的事情会很好。
UPDATE
内置TAB完成的东西会特别棒。
我已经使用Apache Commons CLI library进行命令行参数解析。它相当容易使用,并有reasonably good documentation。
您选择哪个库可能取决于您喜欢哪种选项(“ - gng-style”或“-javac-style”)。
我尝试了几个库,最后使用argparse4j。这是Python的argparse非常好的Java端口。
当您正在寻找一个简化开发交互式shell应用程序的库时,我建议使用Cliche。
看看arg4j。
在我们公司,我们使用JewelCli,它使用带注释的Java接口定义以声明式样式描述命令行界面。
轻巧易用,我推荐它。
我广泛使用了Java Simple Argument Parser。它处理各种选项类型,具有精心设计的库(包括编写自定义解析器的选项),并在JavaDocs和online中提供了良好的文档。
我认为你对标签完成的渴望将由shell而不是命令行解析库来处理。
有一个用于命令行解析的Java port of GNU getopt library。对于命令编辑和TAB完成,有JLine(正如mmyers已经推荐的那样)。
它也值得一看--jopt-simple。
它试图遵守POSIX getopt()和GNU getopt_long()的命令行选项语法。它似乎有一些社区牵引力,特别是命令行解析OpenJDK的首选lib。
另外,正如Brett所提到的,选项卡完成通常由shell提供 - 您可以编写shell函数来提供所需的功能。
附:对不起,重复的答案,但这个问题几乎与Java library for parsing command-line parameters?相同
我用过JSAP。我发现它很稳定并且有很好的记录。
我不确定我理解“内置TAB完成”的含义。你能详细说明吗?