2009-01-12 61 views
36

我需要用Java编写一个简单的命令行应用程序。这将是不错的使用需要解析的命令的关怀和照顾的东西像标志和可选/强制性参数库...有没有好的Java库可以帮助构建命令行应用程序?

UPDATE

已经内置选项卡完成的东西会特别好。

+3

通常,CLI表示您的应用程序从命令行获取参数以确定以何种方式运行。根据你的更新,你的意思是你想在你的Java应用程序中有一个交互式的shell风格的进程? (如irb?) – 2009-01-12 16:59:03

+1

是的,我确实......你是正确的 – carrier 2009-01-12 17:02:35

+1

irb是交互式ruby。我认为,如果不使用“命令行”或“cli”这个短语,您可以重新提问您的问题。也许“有没有库在java中创建交互式shell?”并为清晰起见举例说明您的应用的使用情况。 – 2009-01-12 18:29:38

回答

25

我已使用Apache Commons CLI library进行命令行参数分析。这相当容易使用,并有reasonably good documentation

您选择的库可能归结为您喜欢哪种风格的选项(“--gnu-style”或“-javac-style”)。

更新:picocli TAB completion最近成为可用,可能会有兴趣。不知道任何其他命令行解析库,它提供OP中请求的命令行完成。

20

JLine看起来很有帮助。

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

而且它确实在其features中列出了标签填写。  

4

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

轻巧易用,我会推荐它。

3

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

我认为你对tab完成的愿望将由shell而不是命令行解析库来完成。

0

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

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

1

这也值得看看--jopt-simple

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

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

p.s.对不起,重复的答案,但这个问题几乎相同Java library for parsing command-line parameters?

8

当你在寻找一个图书馆,简化开发交互式s​​hell应用程序,我建议Cliche

相关问题