本系列中第19篇文章的重点是从Java代码解析命令行参数是jClap ( Java命令行参数解析器 ),不应将它与称为JCLAP的库相混淆,而JCLAP库是我本系列先前文章的重点。 在以前的帖子覆盖JCLAP 1.4加尔斯吉尔温斯坦利( snaq.net ),而这个帖子盖jClap 2.0由一月所以 ( extreme_logic )。

通过实例化com.extremelogic.common.jclap.Argument的实例并调用名称为addArgumentaddBooleanArgument的重载方法之一,可以在com.extremelogic.common.jclap.Argument实现“定义”阶段。 下一个代码清单( 在GitHub上提供完整代码)中对此进行了演示。

jClap的“定义”阶段

final Argument argument = new Argument(arguments);
argument.addArgument("file", "Path/name of file", true, 1);
argument.addBooleanArgument("verbose", "Enables verbosity", false);

前面的代码清单演示了提供长参数名称,参数说明,是否需要参数以及参数期望值的数量。 据我所知,无法为参数添加简称(单个连字符和单个字符)。

通过在“定义”阶段定义的Argument实例上调用processArguments()方法,可以通过jClap实现“解析”阶段。 这是单行调用,但会引发检查异常ArgumentException 。 下一行代码清单显示了这种单行解析。

jClap的“解析”阶段

argument.processArguments();

使用jClap通过在“定义”阶段中定义的Argument实例上调用getArgument方法来实现“询问”阶段。 下一个代码清单对此进行了演示。

jClap的“审讯”阶段

out.println("File path/name is '" + argument.getArgument("file") + "'.");
out.println("Verbosity is set to " + argument.getArgument("verbose"));

通过在整个示例中使用的Argument实例上调用displayOptions方法,jClap还可以轻松地将用法写入标准输出。 在下一个代码清单中对此进行了演示,该清单显示了捕获和“处理”已检查的异常ArgumentException

jClap中的“用法”

catch (final ArgumentException argumentException)
{out.println("ERROR: Exception encountered while processing command-line arguments - "+ argumentException);argument.displayOptions();
}

屏幕快照演示了本文中涵盖的代码,其中将jClap应用于命令行处理。 第一个图像描述了未指定必需的--file ArgumentException时对检查到的异常ArgumentException的处理,还描述了jClap提供的用法语句。 第二张图描绘了参数的常规命令行处理。

选择框架或库来帮助Java进行命令行解析时,需要考虑jClap的特征。

  • jClap是带有Apache许可证版本2.0的开源。
  • commons-jClap-2.0.0.jar JAR大小约为15 KB,没有第三方库依赖项。
  • 在我看来,jClap仅支持带有双连字符的“长”参数名称。
  • jClap JAR包含使用Java SE 6 ( 主要版本50 )编译的类文件,因此应与运行在Java SE 6之前的版本的Java应用程序一起使用。
  • 所有参数都从Argument实例作为String检索(没有类型的参数)。
  • jClap JAR还包含一个“样本”应用程序( SampleArguments.class ),IDE反编译器(例如IntelliJ IDEA的内置反编译器和Eclipse的Enhanced Class Decompiler )可以反编译以查看可以写入的源代码类型。使用jClap。

jClap是一个小型易用的库,用于处理Java的命令行参数,可以与运行在Java SE 6以前的Java版本上的Java应用程序一起使用。该库仅支持长参数名,并以以下形式返回参数的值: String>/code> type in all cases.

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

Java命令行界面(第19部分):jClap相关推荐

  1. Java面试题19 牛客下面有关java的引用类型,说法正确的有?

    Java面试题19下面有关java的引用类型,说法正确的有? A:对于一个对象来说,只要有强引用的存在,它就会一直存在于内存中 B:如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可 ...

  2. Leetcode算法Java全解答--19. 删除链表的倒数第N个节点

    Leetcode算法Java全解答–19. 删除链表的倒数第N个节点 文章目录 Leetcode算法Java全解答--19. 删除链表的倒数第N个节点 题目 想法 结果 总结 代码 我的答案 大佬们的 ...

  3. Java:JDK 19——Java 19的新特性

    ​ Java 开发工具包19(JDK 19)将于今年 9 月发布,现已功能完善,目前处于第二阶段.该版本的七项功能包括结构化并发.记录模式.外部函数和内存 API 的预览,以及对开源 Linux/RI ...

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

    Giles Winstanley的JCLAP ( Java命令行参数解析器 )是基于Java的命令行处理库的系列文章中介绍的第18个库. 这篇文章的示例基于需要Java 8的 JCLAP 1.4 . ...

  5. Java命令行界面(第10部分):picocli

    picocli主页面将picocli描述为"强大的微小命令行界面"," picocli"是一个文件Java框架,用于解析命令行参数并生成精美,易于定制的用法帮助 ...

  6. Java命令行界面(第21部分):航空公司2

    本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库. Airline 2的GitHub项目页面描述了该库," Airline是一个Java库,提供了基于注释的 ...

  7. Java命令行界面(第1部分):Apache Commons CLI

    尽管我通常使用Groovy编写要从命令行运行的JVM托管脚本,但是有时候我需要解析Java应用程序中的命令行参数,并且有很多库可供Java开发人员用来解析命令行参数. 在本文中,我将介绍这些Java命 ...

  8. Java命令行界面(第7部分):JCommander

    这是我系列的第七篇文章,简要介绍了用于处理Java命令行参数的各种库. 这篇文章回到了基于注释的库的覆盖范围,该库似乎是在Java中可用于处理命令行参数的众多可用库中知名度最高和最受欢迎的库之一: J ...

  9. Java学习笔记19

    Objects是Java 7新增的一个工具类,它提供了一些工具方法来操作对象,这些工具方法大多是"空指针"安全的. Objects实现的方法如下: (1)hasCode(Objec ...

最新文章

  1. 计算机组成与原理如何书写DEC微指令,计算机组成原理课程设计16位机微程序控制器指令系统设计与实现.doc...
  2. 【软考-软件设计师】编译程序基本原理
  3. 《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来...
  4. android dialog加载中动画效果
  5. 回归素材(part8)--python机器学习算法
  6. 30是什么意思_“29+16”变“30+18”是什么意思?独立艺术院校有何优势?报考需要注意什么?...
  7. 纯数学教程 Page 325 例LXVIII (12)
  8. Javascript实现前端简单路由
  9. GJB5000A与DO178B/C简介及对比
  10. 找出冲突的Windows快捷键
  11. html5富文本编辑器菜鸟手册,富文本编辑器froalaEditor(全面)附教程
  12. 计算机英语教学设计,英语教学设计doc范文精选
  13. 洛谷P3403 跳楼机(最短路)
  14. JZOJ 3337. 【NOI2013模拟】wyl8899的TLE
  15. element-ui MessageBox弹框确定和取消位置(this.$confirm)
  16. 3.注册后台处理逻辑编写
  17. 【JZOJ A组】Melancholy
  18. 数美滑块,js逆向:★★★★
  19. 频域串联滞后校正matlab,控制工程基础(基于Matlab的线性系统串联校正)
  20. 《通信原理》多径衰落信道仿真1

热门文章

  1. Spark入门(一)单主standalone安装
  2. web.xml 组件加载顺序
  3. Auto.JS 教程
  4. java三大框架实现任务调度——IRemindService
  5. 新闻发布项目——数据库脚本(直接导入即可)
  6. php curl post 超时设置,在PHP中设置curl的超时参数(timeout)
  7. qt4.8 mysql 驱动_Qt-4.8.5配置mysql驱动
  8. 华为云微认证答题_158人次通过华为认证考试!今年,湖北这所高校频现大动作...
  9. python3多线程第三方库_Python3 多线程
  10. git 合并冲突_git分支管理的策略和冲突问题