java登录界面命令_Java命令行界面(第11部分):CmdLn

java登录界面命令

这篇文章介绍了如何使用Ostermiller Java Utilities 1.08.02的CmdLn(Java命令行解析器)来处理基于Java的应用程序中的命令行参数。 Ostermiller Java实用程序包括几种不同类型的实用程序 ,但本文的重点是组件页面上描述的“命令行解析器”,“处理Java命令行程序的选项和参数”。

Ostermiller Utilities命令行解析器不使用注释,而是使用具有流畅API概念的程序生成器,而其他一些基于Java的命令行解析库也使用了API来代替注释。 com.Ostermiller.util.CmdLn和com.Ostermiller.util.CmdLnOption类在使用CmdLn进行命令行处理的“定义”阶段一起使用。 下一个代码清单中对此进行了演示。

CmdLn处理的“定义”阶段

public static void main(final String[] arguments)
{final CmdLn cmdLn= new CmdLn(arguments).setDescription("Demonstrates CmdLn").addOptions(new CmdLnOption[]{new CmdLnOption("help",'h'),new CmdLnOption("file",'f').setRequiredArgument().setArgumentBounds(1, 1).setDescription("Path and name of file"),new CmdLnOption("verbose", 'v').setOptionalArgument().setArgumentBounds(0, 0).setDescription("Enable verbosity")});

在刚刚显示的代码清单中,定义了三个选项。 一个选项是“帮助”选项,另外两个选项( -h / --help-v / --verbose )是本系列中其他有关Java命令行解析的文章中使用的选项。 该代码说明可以为使用/帮助信息的每个选项设置一个描述,并且可以指定每个选项是必需的还是可选的。 setArgumentBounds(int,int)方法用于指定每个选项期望的参数的最小值和数量。 file选项应该始终只有一个参数(文件的路径和名称),因此其最小值和最大值均为1。verbosity选项应该没有参数(其存在表示启用了verbosity),因此其最小值和最大值的参数都为0。

Ostermiller Java实用工具命令行解析器提供了三种方法来“定义”要解析的内容。 上面显示的方法在CmdLn页面上称为“按名称命名的选项”方法。 这些页面还演示了定义命令行选项的方法,这些选项将使用“ Option Enum”和“ Call to Listeners”方法进行解析(本文中未演示)。

通常,在有关使用基于Java的库进行命令行解析的文章中,在介绍了如何实现“定义”阶段之后,我将介绍如何实现“解析”阶段。 但是,使用Ostermiller Utilities命令行解析器时,“解析”阶段是隐式的,因此在首先介绍“询问”阶段之后,我将返回到该阶段。

通过在CmdLn实例上调用重载的getResult()方法之一来实现“询问”阶段。 如果重载的getResult(-)方法返回null ,则该选项不存在(或在解析过程中找不到)。 如果该重载方法返回非null值,则该值将为CmdLnResult类型,并表示已解析的选项。 返回的CmdLnResult实例提供了用于访问与该选项关联的一个或多个参数的方法(例如,在我的示例中,访问-f / --file选项的路径和文件名)。 下一个代码清单中将演示这种“询问”。

CmdLn的“审讯”阶段

if(cmdLn.getResult('h') != null)
{cmdLn.printHelp();System.exit(0);
}String fileName = null;
if(cmdLn.getResult('f') != null)
{fileName = cmdLn.getResult('f').getArgument();
}
else
{out.println("Required parameter -f|--file not provided.\n" + cmdLn.getHelp());System.exit(-1);
}boolean verbose = false;
if (cmdLn.getResult('v') != null)
{verbose = true;
}
out.println("File path/name is " + fileName + " and verbosity is set to " + verbose);

CmdLn类还具有getResult s方法,这些方法返回List<CmdLnResult>来访问多个已解析的选项。 上面的示例演示了如何检查getResult()方法调用的结果是否为null以确定是否设置了选项。 GitHub上提供了用于此帖子的Java应用程序的完整源代码,并使用CmdLn.present(char)而不是null检查来确定选项的存在。 区别可以在这里看到 。

Ostermiller Java实用程序命令行解析器不需要显式的“解析”调用。 相反,先前讨论的“询问”方法( getResultgetResults重载版本)在调用时进行隐式解析。 这些方法中的每一个都调用public方法CmdLn.parse() ,但实际上只在第一个调用时进行解析,因为该实例将解析一个boolean值,该boolean值指示该实例无需在随后对getResultgetResults方法的调用中再次进行解析。 。

接下来的三个屏幕快照演示了如何使用Ostermiller Java Utilities命令行解析器对该简单Java应用程序进行使用。 当未指定任何参数(包括所需的文件路径/名称参数)时,第一张图像描述了输出。 第二张图描述了当指定--help-h选项时生成的帮助/用法输出,并显示在这种情况下没有关于丢失参数的错误消息。 第三个屏幕快照演示了使用文件的简短形式和冗长形式以及详细信息选项的简单应用程序的“快乐路径”执行。

选择Ostermiller Java实用程序CmdLn的一些其他特征时,需要选择框架或库来帮助Java进行命令行解析。

  • CmdLn所属的Ostermiller Java实用程序是开源的, OstermillerUtils许可证是GNU通用公共许可证版本2 (GPL)。 com.Ostermiller.util许可常见问题解答说明了为什么选择GPL以及避免将这些库“用于封闭源应用程序”的愿望。
  • CmdLn是更大的Ostermiller Java实用程序的一部分,可以作为单个JAR来使用。 ostermillerutils-1.08.02.jar大小约为272 KB,并且不需要第三方JAR(不需要其他外部依赖项)。
  • Ostermiller Java实用程序需要J2SE 5或更高版本。
  • 近年来,Ostermiller Java实用程序未见更新,但是版本历史记录详细说明了这些实用程序的长期可用性。

Ostermiller Java实用工具的命令行解析器部分很容易用于基本的命令行解析,并完成了工作。 但是,与本系列中讨论的大多数基于Java的开源命令行处理库相比,Ostermiller Java实用程序具有更严格的许可。 另外,需要包括整个Ostermiller Java实用程序JAR才能获得命令行处理功能,而对于某些简单的命令行驱动的应用程序而言,这可能会感到有些沉重。 我相信Ostermiller Java实用工具提供的命令行解析实用工具对于其应用程序已经将Ostermiller Java实用工具用于其提供的其他实用工具的开发人员而言,将最为有吸引力。

其他参考

  • CmdLn:Java命令行解析器
  • CmdLn OstermillerUtils JavaDoc
  • 源代码 (托管在ostermiller.org)
  • 下载com.Ostermiller.util Java实用程序
  • Facebook上的Ostermiller Java实用程序
  • Maven上的Ostermiller Java实用程序(1.07.00)
  • GitHub上的Ostermiller实用程序: stephenostermiller / ostermillerutils

翻译自: https://www.javacodegeeks.com/2017/08/java-command-line-interfaces-part-11-cmdln.html

java登录界面命令

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

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

相关文章

socket模拟http的登陆_Python网络爬虫之模拟登陆 !

为什么要模拟登陆&#xff1f;Python网络爬虫应用十分广泛&#xff0c;但是有些网页需要用户登陆后才能获取到信息&#xff0c;所以我们的爬虫需要模拟用户的登陆行为&#xff0c;在登陆以后保存登陆信息&#xff0c;以便浏览该页面下的其他页面。保存用户信息模拟登陆后有两种…

java登录界面命令_Java命令行界面(第12部分):CLAJR

java登录界面命令第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 &#xff08;CLAJR&#xff09;。 该“库”是单个Java源文件&#xff08; CLAJR-0.9.java &#xff09;&#xff0c; 可从SourceForge下载 。 CLAJR的主页当前显示2006年版…

openssh rpm包_100台CentOS7要升级OpenSSH怎么办?

背景现在有 100 台 Centos7 需要升级 OpenSSH 到 8.3&#xff0c;怎么办呢&#xff1f;一台台的操作显然不符合我摸鱼的风格&#xff0c;既然每台操作都一样&#xff0c;Ansible Roles 就有用武之地了。正常升级流程首先 rpmbuild 打出 OpenSSH 8.3 的 RPM 包&#xff0c;rpm -…

java 从一个容器获取对象,如何从 Spring IoC 容器中获取对象?

前面几篇文章主要分析了 Spring IoC 容器如何初始化&#xff0c;以及解析和注册我们定义的 bean 信息。其中&#xff0c;「Spring 中的 IoC 容器」对 Spring 中的容器做了一个概述&#xff0c;「Spring IoC 容器初始化」和「Spring IoC 容器初始化(2)」分析了 Spring 如何初始化…

thymeleaf与jsp_PagingAndSortingRepository –如何与Thymeleaf一起使用

thymeleaf与jsp在本教程中&#xff0c;我将演示如何通过分页显示Thymeleaf中的企业客户列表。 1 –项目结构 我们有一个正常的Maven项目结构。 2 –项目依赖性 除了正常的Spring依赖关系之外&#xff0c;我们还添加Thymeleaf和hsqldb&#xff0c;因为我们使用的是嵌入式数据…

MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句

文章目录实际需求分析思路写拼接 SQL 脚本的脚本语句执行得到脚本语句保存成 SQL 脚本文件实际需求 有些行政区域的字段 area_fullname 是空的&#xff0c;如何补全呢&#xff1f;如下所示&#xff1a; 分析思路 &#xff08;一&#xff09;如何取到每个区域的上级名称和上…

php的变量都放在哪里,php变量一般放在哪个位置

php变量一般放在哪个位置php定义变量的要求格式&#xff0c;是非常宽松的&#xff0c;至于在哪里定义变量就需要看你的需求&#xff0c;可以在构造函数&#xff0c;也可以在你定义的方法中定义局部变量&#xff0c;也可以在构造函数外面定义全局变量。// 局部变量 函数内部func…

oauth2令牌刷新_了解OAuth2令牌认证

oauth2令牌刷新1.简介 在本教程中&#xff0c;我们将了解OAuth2令牌身份验证 &#xff0c;以便只有经过身份验证的用户和应用程序才能获得有效的访问令牌&#xff0c;该令牌随后可用于访问服务器上的授权API&#xff08;在OAuth术语中仅是受保护的资源&#xff09;。 使用基于…

jsap支付_Java命令行界面(第20部分):JSAP

jsap支付JSAP &#xff08; Java Simple Argument Parser &#xff09;2.1是本系列文章的第二十篇&#xff0c;重点是处理Java的命令行参数。 JSAP页面描述了该库存在的原因&#xff1a;“我在Internet上找到了多个解析器&#xff0c;所有解析器都处理了开关&#xff0c;但是没…

python语句大全input_input提示文字 Python基础输入函数,if-else语句,if-elif

input&#xff08;&#xff09;函数 此功能用于获取用户输入。 &#xff08;调用1&#xff09;input后&#xff0c;程序将立即暂停并等待用户输入。在用户完成内容输入后&#xff0c;单击Enter&#xff0c;程序将继续向下执行。 例如&#xff1a; input() &#xff08;2&#x…

ftp限流java,FTP流量限制的方法

一般来说&#xff0c;下载都是通过FTP来实现的&#xff0c;这样简单的采用ACLs就可以实现的。不过这样存在一个问题&#xff0c;就是原来正常的网络访问也给禁止了&#xff0c;无法继续工作&#xff0c;另外&#xff0c;还有大量的DOWNLOAD不通过FTP&#xff0c;而是借助HTTP协…

argparser_Java命令行界面(第22部分):argparser

argparserJohn Lloyd的argparser是本系列的第二十二篇有关基于Java的命令行参数解析的文章中介绍的库。 该库的主页除了提供单个源代码示例外&#xff0c;还提供了指向基于Javadoc的API文档 &#xff0c;JAR文件&#xff0c;ZIP文件和TAR文件的链接。 本帖子中使用的示例与本系…

判断 小程序 是否 滚动到页面底部 scrolltolower_微信小程序长列表性能优化——recycle-view

背景&#xff1a;第七次人口普查项目使用是微信小程序原生框架&#xff0c;组件是根据用户需求由项目组前端组组长封装完成的。采集小程序正式登记首页列表页面&#xff0c;根据腾讯老哥在sentry上的监控可以看出&#xff0c;列表页面前端性能比较差&#xff0c;主要表现在一些…

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

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

java 接口 私有_Java 9:好的,坏的和私有的接口方法

java 接口 私有Java 9 是在几周前发布的。 查看发行说明 &#xff0c;其中包含许多有趣的功能。 不过&#xff0c;我觉得并非一切都是不如Oracle和Java行家似乎图片吧 。 我看到了Java世界中的三个趋势&#xff0c;分别是好&#xff0c;坏和丑陋。 让我们从好的开始。 Birdman…

python卸载module_Python学习笔记

拖了一整年终于开始学习Python编程。为了逼自己快速上路&#xff0c;强行要求自己本学期的两门课程全部的coding作业用Python完成。 一门机器学习&#xff08;computational Stats&#xff09;&#xff0c;一门Jeff WU 大佬的实验设计与分析&#xff08;DOE&#xff09;。即使R…

mlp神经网络_白天鹅黑天鹅灰天鹅?卷积神经网络帮你搞定识别

全文共3014字&#xff0c;预计学习时长6分钟本文将通过一系列的天鹅图片来解释卷积神经网络&#xff08;CNN&#xff09;的概念&#xff0c;并使用CNN在常规多层感知器神经网络上处理图像。图像分析假设我们要创建一个能够识别图像中的天鹅的神经网络模型。天鹅具有某些特征&am…

java登录界面命令_Java命令行界面(第26部分):CmdOption

java登录界面命令由于Tweet&#xff0c;我了解了本系列中第26个基于Java的功能强大的库&#xff0c;该库用于解析命令行参数 。 CmdOption在其GitHub主页上被描述为“一个通过注释配置的&#xff0c;用于Java 5应用程序的简单注释驱动命令行解析器工具包。” 该项目的副标题是“…

getopt java_Java命令行界面(第28部分):getopt4j

getopt javagetopt4j的页面将其描述为“一个根据GNU样式解析命令行参数的库。” 然后&#xff0c; 页面介绍getopt4j &#xff1a;“getopt4j库旨在以与glibc &#xff08;GNU C运行时库&#xff09;中的C getopt&#xff08;&#xff09;函数相同的方式解析命令行选项。 与原始…

springboot redis token_Spring Boot + Redis + 注解 + 拦截器来实现接口幂等性校验

优质文章&#xff0c;及时送达作者 | wangzaiplus链接 | www.jianshu.com/p/6189275403ed一、概念幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次比如:订单接口, 不能多次创建订单支付接口, 重复支付同一笔订单只能扣一次钱支付宝回调接口, 可能…