Java命令行界面(第20部分):JSAP

JSAP ( Java Simple Argument Parser )2.1是本系列文章的第二十篇,重点是处理Java的命令行参数。 JSAP页面描述了该库存在的原因:“我在Internet上找到了几个解析器,所有解析器都处理了开关,但是在解析返回类型和配置文件方面,都没有我想要的多功能性。”

JSAP提供了相当多的灵活性,但付出了一些复杂性的正常代价。 幸运的是,JSAP提供了一个名为SimpleJSAP的类,它使使用JSAP完成简单任务变得更加容易。 JSAP文档以这种方式表达了这一观点: “如果您想减少处理命令行的代码量,JSAP提供了一个SimpleJSAP,可以为您完成大部分工作。” 下一个代码清单演示了在单个(尽管很冗长)语句中使用SimpleJSAP来定义预期的命令行选项。

JSAP的“定义”阶段

final SimpleJSAP jsap = new SimpleJSAP("Main Application","Demonstrate JSAP",new Parameter[]{new FlaggedOption("file", STRING_PARSER, NO_DEFAULT, REQUIRED, 'f', "file", "File path/name."),new Switch("verbose", 'v', "verbose", "Requests verbose output." )});

对于上面的代码清单,我使用静态导入来减少此“定义”代码的冗长性。 这些可以在GitHub上的完整代码清单中看到。 上面的代码定义了本系列中用于解析Java命令行参数的库中所有文章中使用的两个选项:文件路径/名称和详细程度。 单个字符'f''v'是短选项名称,而长选项名称在它们各自的调用( fileverbose )之后。 请注意,命令行参数的“定义”也可以通过XML进行配置 ,尽管此处未演示。

所述“语法分析”阶段在司法制度评估方案与其中的调用另一单个语句实现解析(字符串[])上的实例方法SimpleJSAP返回的一个实例JSAPResult 。

JSAP的“解析”阶段

final JSAPResult parsedResult = jsap.parse(arguments);

JSAP的“询问”阶段是通过调用parse方法返回的JSAPResult实例来完成的,如下面的代码清单所示。

JSAP的“审讯”阶段

out.println("File path/name is '" + parsedResult.getString("file") + "'.");
out.println("Verbosity level is " + parsedResult.getBoolean("verbose"));

JSAP将生成自动用法和帮助语句。 下一个代码清单演示了如何使用SimpleJSAP.messagePrinted()方法来确定是否发生了一些解析错误,然后使用SimpleJSAP.getHelp()消息来访问自动生成的“帮助”消息。

JSAP的“帮助”

if (jsap.messagePrinted())
{out.println(jsap.getHelp());System.exit( -1 );
}

接下来的两个屏幕快照演示了如何使用JSAP执行本文中所示的代码示例。 第一张图片描述了未提供所需的-f / --file标志时打印的用法说明。 第二幅图描绘了基于JSAP的示例代码的正常行为。

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

  • JSAP是开源的,并获得了次级GNU公共许可证 (LPGL)的许可 。
  • JSAP-2.1.jar JAR文件的大小约为68 KB,基本功能不需要第三方依赖。
    • 从XML加载JSAP配置的能力(本文未涵盖)确实需要XStream 。
  • 《 JSAP手册》更详细地讨论了当有其他可用的Java命令行解析替代方法时, 为什么编写JSAP的原因 。
  • JSAP被其他产品使用 , 受到了一些用户的好评 ,并且已在Groovy中代替内置的 Apache Commons CLI使用 。

JSAP似乎是较旧的基于Java的命令行解析库中较流行的一种。 像本文中演示的那样,基本功能相对容易使用,但是还可以提供更多的灵活性和可定制性,以满足更复杂的需求。

其他资源

  • JSAP v2.1:Java简单参数解析器
  • SourceForge上的JSAP
  • JSAP – Java简单参数解析器(v2.1)手册
  • MvnRepository上的JSAP
  • JSAP API文档 (Javadoc)
  • 解析命令行参数– JSAP
  • Groovy的命令行参数解析 (使用JSAP)

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

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

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

相关文章

小米平板4android软件兼容吗,小米平板4有NFC功能吗 小米平板4支持NFC吗

小米平板4有NFC吗?小米平板4终于在诸多期待之下发布了,总的来说,小米平板4是一款性价比非常高的产品。所以没有带来太多惊喜的地方,但整体表现还是不错的。可以说是目前最便宜的骁龙660智能产品,性能中端。加上小米MIU…

监视器java_Java监视器绑定的超人

监视器java这是超人生活中的黑暗时期。 乔尔艾尔(Jor-El)希望他继续航行,为他的最终命运做好准备。 然而,地球面临着世界末日,正义联盟需要他们的钢铁侠行动来拯救世界。 但是,由于我们只有一个超人&#x…

Java命令行界面(第25部分):JCommando

JCommando 网站 上将JCommando描述为“命令行参数的Java参数解析器”。 JCommando读取XML配置以生成一个Java类,该类处理Java应用程序中的解析。 在提供XML配置的 Java命令行解析库的本系列文章中,以前涵盖的唯一基于Java的库是JSAP ,但这是该…

鸿蒙系统6月可升级,华为鸿蒙2.0系统大规模升级从6月开始?

你现在使用的智能手机是什么,苹果的iPhone手机,华为智能手机,小米手机还是其他智能手机。从操作系统来看目前的智能手机基本上可以分成iPhone手机跟安卓智能手机,其中iPhone手机使用的是iOS系统,而其他智能手机操作系统…

wso2 esb_WSO2 ESB的一种消息传递方式

wso2 esb正如我之前在WSO2 ESB工作时所发布的那样。 为了更好地理解此ESB,我一直在浏览示例 (尚未完成所有示例 )。 示例12是关于与ESB的单向消息传递,并使用TCP监视器使其可见。 我之前已经介绍过如何设置类似的工具“ TcpTunnel…

android 录像机,android 录像机

一直都做camera 录像功能其实知道的很少,以前也是迷迷糊糊知道怎么写个video,今天测试了一下,各种问题。问题来源首先是对于SDK的阅读不够仔细。 实践的比较少。 其实所谓的录像 就是两个类的结合 一个是Camera 一个是MediaRecorder 这两个类…

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

本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库。 Airline 2的GitHub项目页面描述了该库,“ Airline是一个Java库,提供了基于注释的框架来解析命令行界面。” 该页面进入状态:航空公司“既支持简单的单个命令&#xf…

android中进度条的使用,android的进度条使用

android的进度条1、实现的效果2、布局代码先写一个my_browser.xml文件 存放WebViewandroid:layout_width"fill_parent"android:layout_height"fill_parent"android:orientation"vertical" >android:id"id/webView"android:layout_w…

应用服务器web服务器_最受欢迎的应用服务器

应用服务器web服务器这是本系列的第二篇文章,我们将发布有关Java安装的统计数据。 使用的数据集来自免费的Plumbr安装,在过去六个月中,我们总共收集了1,024个不同的环境。 该系列的第一篇文章分析了基础-运行JVM的操作系统,是32位…

如何在Java 8中将Lambda表达式转换为方法引用?

如果您使用Java 8进行编码,那么您会知道使用方法引用代替lambda表达式会使您的代码更具可读性,因此建议尽可能使用方法引用替换lambda表达式,但是,最大的问题是,您如何查找是否可以用方法引用替换lambda? 是…

最大化窗口设置_打开表格总是默认窗口最小化?适用Word、PPT等其他应用

今天有小哥哥说每天早上上班打开第一个表格时,这样显示;打开第二个表时是这样显示;每次打开第二个表后点最大化再打开其他的表才正常显示为最大化的状态。其实,这只是表格的默认打开方式改变了,我们改正过来就好了。在…

html5块元素代码,html5 区块与内联div 与span html块级元素(示例代码)

HTML 和 可以通过 和 将 HTML 元素组合起来。HTML 块元素大多数 HTML 元素被定义为块级元素或内联元素。编者注:"块级元素"译为 block level element,"内联元素"译为 inline element。块级元素在浏览器显示时,通常会以新…

html页面js遍历listview,javascript实现的listview效果

javascript实现的listview效果更新时间:2007年04月28日 00:00:00 作者:#oContainer {width: 600px;height: 500px;border: 1px solid menu;margin: 0px;padding: 0px;overflow: hidden;}a {color: black;text-decoration: none;}a:hover {color: red;t…

Apache Ignite本机持久性,简要概述

通过将数据的工作集放入系统内存中,内存中方法可以达到极高的速度。 当所有数据都保存在内存中后,处理使用传统旋转磁盘引起的问题的需求就消失了。 例如,这意味着无需维护数据的其他缓存副本并管理它们之间的同步。 但是这种方法还有一个缺点…

Java命令行界面(第23部分):Rop

Rop库在其主页上被描述为“用Java编写的轻量级命令行选项解析器”。 Rop的“简介”还指出:“ Rop的设计目的是最小化同时方便,并涵盖了大多数常见的命令行解析用例。” 这篇文章是本系列中第23篇有关解析Java命令行参数的文章 ,重点是Rop。 …

Java 9,Jigsaw,JPMS和模块:个人探索

Java 9由于Jigsaw项目而延迟了很多次,您可能会听到很多关于模块,模块化和其他内容的信息,那么,它的全部含义是什么? 模块化到底是什么,模块化平台是什么意思? Java平台模块系统(JPMS…

仪征市第二中学计算机老师,静心倾听花自开 ——仪征市第二中学徐丞老师

原标题:静心倾听花自开 ——仪征市第二中学徐丞老师徐丞老师是我校一名优秀的青年教师。自2004年从教以来,他满怀对教育事业的真诚,立足本职,默默耕耘,在平凡中成就着不平凡。在教育教学过程中,徐丞老师始终…

智慧物业小程序_刷脸支付+电商小程序+智慧酒店营销方案

我们这边刷脸支付电商小程序智慧酒店行业解决方案,支付宝微信订房小程序,芝麻信用免押住,数字化经营发券引流,未来酒店:0押金 0房费 退房扣款,不占用资金,用户增长信用分,线上订房小程序&#x…

# 字符串从右往左查找_字符串匹配(搜索,查找)算法

(一)前言所谓的字符串匹配就是在一个长字符串(可称文本T)中找一个短字符串(可称模式P),看长字符串中是否存在短字符串,若存在则返回出现的第一个位置,若不存在则返回一个标记。字符串搜索算法有很多,比较知名的自然是大名鼎鼎Knut…

html5按钮样式具有子项目,如何使用HTML5+css3制作出12种常用的按钮开关样式(附完整代码)...

现如今前端网页的开发越来越注重设计感,这些设计感更体现在细节处,今天向大家具体介绍一下各式各样的开关按钮是如何使用HTML5css3制作出来的,希望可以帮到大家。使用HTML5css3制作按钮开关的原理根据设计的要求填充各种颜色。按钮开关的形状…