Java命令行界面(第18部分):JCLAP

Giles Winstanley的JCLAP ( Java命令行参数解析器 )是基于Java的命令行处理库的系列文章中介绍的第18个库。 这篇文章的示例基于需要Java 8的 JCLAP 1.4 。 JCLAP主页上指出:“ JCLAP帮助Java开发人员为其应用程序创建易于使用的命令行界面。”

JCLAP通过在CLAParser对象上调用“添加XXXXX选项”方法来完成“定义”阶段。 与本系列前面的文章中的例子一样,该文章的示例定义了两个命令行选项,一个用于文件路径和名称,一个用于启用冗长性。 下一个代码清单演示了如何使用JCLAP定义这两个命令行选项(完整的代码清单可在GitHub上找到 )。

JCLAP的“定义”阶段

final CLAParser parser = new CLAParser();
final Option<String> fileNameOption= parser.addStringOption("f", "file", "Path/name of the file.", 1, 1);
final Option<Boolean> verbosityOption= parser.addBooleanOption("v", "verbose", "Verbosity enabled?");

刚刚显示的代码清单证明JCLAP支持长参数名和短参数名,提供描述的能力以及指定每个参数的最小和最大出现次数的能力。

“解析”阶段是通过JCLAP调用CLAParser.parse(String [])方法实现的,尽管该方法确实抛出了检查到的异常OptionException 。

JCLAP的“解析”阶段

parser.parse(arguments);

在JCLAP中以不同的方式实现“询问”阶段,但是我在这里使用的方法是使用重载的CLAParser.getOptionValue()方法之一。

JCLAP的“审讯”阶段

out.println("File path/name is " + parser.getOptionValue(fileNameOption));
out.println("Verbosity is " + (parser.getOptionValue(verbosityOption) != null));

JCLAP还支持自动创建使用情况声明。 下一个代码清单演示了如何在与捕获选中的OptionException相关联的块中调用重载的CLAParser.printUsage()方法之一。

使用JCLAP的自动使用情况声明

catch (OptionException optionException)
{out.println("Exception: " + optionException);parser.printUsage(out, true);
}

接下来的两个屏幕快照描述了实际的代码示例。 当没有提供任何参数时,第一个屏幕快照显示JCLAP生成的用法语句。 第二张图显示了“幸福的道路”,为两个参数应用了长标记名和短标记名。

选择用于帮助Java进行命令行解析的框架或库时,需要考虑snaq.net JCLAP的特征。

  • JCLAP是开放源代码,具有在项目页面上描述的“ BSD样式许可证”。
  • jclap-1.4.jar JAR文件的大小约为46 KB,没有第三方库依赖项。
  • 不同版本的JCLAP是为不同版本的Java设计的。
    • JCLAP 1.4需要Java 8 。
  • JCLAP的作者已按照电子邮件的要求提供了潜在的支持和错误修复。
  • JCLAP为国际化和本地化提供了一些支持。

JCLAP(Java命令行参数解析器)是一个具有商业友好许可证的小型库,近年来已对其进行了更新,以使用Java 8功能。 JCLAP的作者在该项目的主页上写道:“ JCLAP绝不是唯一的,并且许多类似的实用程序都是免费的和商业上可用的。” 作者进一步解释说:“现在存在许多类似的解决方案,似乎又有多余的解决方案,但是已经创建了JCLAP,将其公开可用似乎是有益的。”

其他参考

  • JCLAP主页
  • JCLAP 1.4 API文档 (Javadoc)
  • Maven2Repo.com上的JCLAP 1.4

翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-18-jclap.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据拆分_数据拆分,偏方请拿好

小伙伴们好啊&#xff0c;今天老祝和大家分享一个比较特殊的数据拆分实例。先来看一组数据&#xff1a;这是一些从系统中导出的数据&#xff0c;一个序号后面连接一个姓名&#xff0c;但是现在都挤在了一个单元格里。咱们要把这些数据变成下面的效果&#xff1a;接下来&#xf…

sql文字转换全拼_取汉字全拼的SQL函数

/*根据汉字获取全拼1.生成所有读音临时表2.根据Chinese_PRC_CS_AS_KS_WS 排序获取读音*/CREATE function f_GetPinYin(str varchar(100))returns varchar(8000)asbegindeclare re varchar(8000)--生成临时表declare t table(chr nchar(1) collate Chinese_PRC_CS_AS_KS_WS,py n…

jaxb入门_JAXB教程–入门

jaxb入门注意&#xff1a;请查看我们的Java XML绑定JAXB教程– ULTIMATE指南 什么是JAXB&#xff1f; JAXB代表用于XML绑定的Java体系结构。它用于将XML转换为java对象&#xff0c;并将java对象转换为XML。JAXB定义了一个用于在XML文档中读写Java对象的API。与SAX和DOM不同&am…

P2863 [USACO06JAN]牛的舞会The Cow Prom

题目描述 The N (2 < N < 10,000) cows are so excited: its prom night! They are dressed in their finest gowns, complete with corsages and new shoes. They know that tonight they will each try to perform the Round Dance. Only cows can perform the Round D…

call需要多大带宽 video_LTE杂谈之IMS voice 和video call流程

pan >SIP Message Logged Bytes 1951Message ID IMS_SIP_INVITEResponse Code INFORMAL_RESPONSE (0)CM Call ID 2SIP Call ID 842064754_23544448882409:8804:8000:186e:9fb:f711:a6d6:ead会话标识&#xff0c;整个流程不变Sip Message INVITEtel:10086;phone-context…

取消堆集以提高延迟并减少AWS账单

大多数性能问题可以通过几种不同的方式解决。 多数人都容易理解和应用许多适用的解决方案。 一些解决方案&#xff0c;例如从JVM管理的堆中删除某些数据结构&#xff0c;则更为复杂。 因此&#xff0c;如果您不熟悉此概念&#xff0c;我建议您继续学习我们最近如何减少应用程序…

python 环境常用指令(updating...)

# 配置pip 源 mkdir -p ~/.pip && cat >> pip.conf <<EOF [global] timeout 60 index-url https://pypi.doubanio.com/simple EOF # pyenv 安装 所需依赖&#xff1a; yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel…

shell 删除了hdfs 文件,在HDFS上删除超过10天的文件

Is there a way to delete files older than 10 days on HDFS?In Linux I would use:find /path/to/directory/ -type f -mtime 10 -name *.txt -execdir rm -- {} \;Is there a way to do this on HDFS? (Deletion to be done based on file creation date)解决方案Solution…

mysql使用方法_Mysql的常用用法

一、mysql中limit的用法详解[数据分页常用]在我们使用查询语句的时候&#xff0c;经常要返回前几条或者中间某几行数据&#xff0c;这个时候怎么办呢&#xff1f;不用担心&#xff0c;mysql已经为我们提供了这样一个功能。SELECT * FROM table LIMIT [offset,] rows | rows OF…

MTK 移植泰文输入法

1.移植zi输入法 1.1 在文件..\make\XXX_GPRS.mak中 讲输入方式改为MMI_ZI XXX_LANGUAGE EN_SM_THAI INPUT_METHOD MMI_XI 1.2在MMI_feature.h 打开相应的ZI语言输入法的宏开关&#xff0c; #if defined(CFG_MMI_LANG_THAI) && ((CFG_MMI_LANG_THAI __ON__)||(CFG_MM…

java中无法推断类型参数_Java中的推断异常

java中无法推断类型参数借用和窃取其他语言的概念和想法总是很高兴的。 Scala的Option是我真正喜欢的一个主意&#xff0c;因此我用Java编写了一个实现。 它包装了一个可能为null或不为null的对象&#xff0c;并提供了一些可用于某种分类功能的方法。 例如&#xff0c;isDefine…

H3C 三种生成树协议特性的比较

转载于:https://www.cnblogs.com/fanweisheng/p/11153361.html

使用HazelCast进行休眠缓存:基本配置

以前&#xff0c;我们对JPA缓存&#xff0c;机制以及hibernate提供的内容进行了介绍 。 接下来是一个使用Hazelcast作为二级缓存的休眠项目。 为此&#xff0c;我们将在JPA中使用一个基本的spring boot项目。 Spring Boot使用休眠作为默认的JPA提供程序。 我们的设置将非常接…

mysql事务实战_mysql事务隔离级别详解和实战

A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据但是 在A事务中查询的话 查到的都是操作之后的数据没有提交的数据只有自己看得到&#xff0c;并没有update到数据库。查看InnoDB存储引擎 系统级的隔离级别 和 会话级的隔离级别&#xff1a;mysql> sele…

微云 linux_编年史与微云

微云 linux总览 我面临的一个常见问题是&#xff1a; 如果是单个作者&#xff0c;多个读者&#xff0c;如何缩放基于Chronicle的系统。 尽管有解决此问题的方法&#xff0c;但很有可能根本不会有问题。 微云 这是我用来描述单个线程来完成当前由多个服务器完成的工作的术语。 …

H3C 计算子网内可用主机地址数

转载于:https://www.cnblogs.com/fanweisheng/p/11153665.html

mysql中两次排序_MySQL中的两种排序方式: index和filesort

index &#xff1a;通过有序索引顺序扫描直接返回有序数据&#xff0c;不需要额外的排序&#xff0c;操作效率较高。filesort&#xff1a;通过对返回数据进行排序&#xff0c;filesort 并不代表通过磁盘文件排序&#xff0c;而是说明进行了一个排序操作&#xff0c;至于排序操作…

Java命令行界面(第2部分):args4j

在上一篇文章中 &#xff0c;我研究了如何使用Apache Commons CLI在Java应用程序中解析命令行参数。 在本文中&#xff0c;我将使用另一个库args4j进行相同的操作。 args4j采用了一种不同于Commons CLI的方式来指定Java应用程序应期望的命令行参数。 尽管Commons CLI期望代表选…

mysql my.cnf在哪里_my.cnf配置文件在哪

my.cnf配置文件在linux上是位于路径“/etc/my.cnf”下&#xff0c;在window上则位于安装目录的根目录下&#xff1b;可以使用命令“mysql --help”查看关于MYSQL对应配置文件“my.cnf”搜索顺序。一般linux上都放在 /etc/my.cnf ,window 上安装都是默认可能按照上面的路径还是没…

深入学习Mybatis框架(二)- 进阶

1.动态SQL 1.1 什么是动态SQL&#xff1f; 动态SQL就是通过传入的参数不一样,可以组成不同结构的SQL语句。 这种可以根据参数的条件而改变SQL结构的SQL语句,我们称为动态SQL语句。使用动态SQL可以提高代码重用性。 1.2 XML方式的实现 1.2.1 需要使用到的标签 <if> 用于判…