java登录界面命令_Java命令行界面(第13部分):JArgs

java登录界面命令

JArgs 1.0的区别在于,这是我的第13篇文章的主题,该文章是关于Java命令行参数解析的。 JArgs是一个开放源代码( BSD许可 )库,主要由Steve Purcell和Ewan Mellor等 不同贡献者支持。 事实证明,这在第一次使用JArgs时可能会引起一些混乱,因为程序包名称和其他详细信息会根据您应用的JArgs版本而变化。

JArgs项目页面将JArgs描述为“供Java程序员使用的便捷,紧凑,预先打包并有详尽文档的命令行选项解析器套件。” 该页面断言,可能会选择JArgs而不是其他基于Java的命令行处理库,因为JArgs“易于使用,经过全面测试,有据可查且已获得广泛许可(BSD许可,因此不会出现GNU混乱)”。 该页面还指出:“该软件包很小,没有多余的装饰,但功能齐全,并且包含已投入生产使用相当一段时间的代码。”

JArgs确实很小。 jargs-1.0.zip文件的大小不足200 KB,而提取的核心jargs.jar仅约12 KB。 没有第三方库依赖项。 以下屏幕快照演示了从SourceForge下载的jargs.jar的内容( Maven存储库中可用的jargs-1.0.jar 与此类似)。

对于JArgs文档包括其主要Javadoc生成API文档和代码示例如OptionTest和CustomOptionTest 。

使用JArgs时,使用的主要类是CmdLineParser ( jargs.gnu.CmdLineParser或com.sanityinc.jargs.CmdLineParser取决于您在何处获得JArgs的发行版以及所获得的版本)。 如果使用通过SourceForge下载或通过Maven存储库 提供的JArgs JAR,则将使用的主要类是jargs.gnu.CmdLineParser 。 另一方面,如果您从GitHub(purcell / jargs)上的可用源构建JArgs,则主类将为com.sanityinc.jargs.CmdLineParser 。 无论哪种情况,都只有一个CmdLineParser外部类,并且它使用嵌套类来提供额外的支持。 在这篇文章中,我将使用jargs.gnu.CmdLineParser演示基于SourceForge / Maven JAR的jargs.gnu.CmdLineParser 。 我的示例的完整源代码将发布在GitHub上,并且可能会对该版本进行编辑,以利用更明确的导入来提高代码的简洁性和可读性。

JArgs很小,因此令人惊讶地很简单。 它没有提供很多精美的功能,但是它确实使用不使用注释或反射的简单编程方法来执行基本的命令行参数处理。

为了实现使用JArgs解析命令行参数的“定义”阶段,需要实例化CmdLineParser类的实例,并为每个预期的命令行选项在该实例上调用addOption(CmdLineParser.Option)方法 。 每个选项都由扩展CmdLineParser.Option类的类的实例表示。 在本系列的示例中,我一直在使用基于字符串的文件路径/名称选项和基于布尔的详细选项。 因此,在将JArgs用于这些示例时,可以将CmdLineParser.Option.StringOption类用作文件路径和名称,将CmdLineParser.Option.BooleanOption类用作详细选项。 下一个代码清单演示了使用JArgs实现“定义”阶段的过程。

JArgs的“定义”阶段

public static void main(final String[] arguments)
{final CmdLineParser cmdLineParser = new CmdLineParser();final CmdLineParser.Option fileOption = new CmdLineParser.Option.StringOption('f', "file");cmdLineParser.addOption(fileOption);final CmdLineParser.Option verbosityOption = new CmdLineParser.Option.BooleanOption('v', "verbose");cmdLineParser.addOption(verbosityOption);

使用JArgs进行“解析”仅需要一条语句,但是您确实需要捕获CmdLineParser.parse(String [])方法引发的两个检查的异常,或明确声明这些异常是从使用method调用的代码中引发的。 这显示在下一个代码清单中。

JArgs的“解析”阶段

try
{cmdLineParser.parse(arguments);
}
catch (CmdLineParser.IllegalOptionValueException | CmdLineParser.UnknownOptionException exception)
{out.println("Unable to parse command line options - " + exception);System.exit(-1);
}

当刚刚显示的代码成功执行(没有引发两个检查的异常之一)时,在其上调用parse(String[])方法的CmdLineParser实例现在包含为预期的命令行选项分析的值,因此我们准备“审讯”该实例。

JArgs命令行选项处理的“询问”阶段使用前面讨论的CmdLineParser.Option -extended类上的方法来检索为每个选项解析的值。 CmdLineParser.getOptionValue()方法的重载版本用于执行此询问。 如果未找到或解析选项,则仅接受需要其值的Option实例的方法[ getOptionValue(CmdLineParser.Option) ]返回null 。 如果未找到或解析该选项,则接受需要其值的Option实例和第二个“默认”对象[ getOptionValue(CmdLineParser.Option,Object) ]的方法将返回提供的默认对象。 在下面的代码清单中,我在两种情况下都使用了第二种形式,从而确保不必处理null

JArgs的“审讯”阶段

final String filePathName = cmdLineParser.getOptionValue(fileOption, "null").toString();
if (filePathName.equals("null"))
{out.println("ERROR: File path/name must be provided.");System.exit(-2);
}
out.println("File path/name is " + filePathName+ " and verbosity is " + cmdLineParser.getOptionValue(verbosityOption, false)+ ".");

有了这些基本代码示例,下面的屏幕快照中演示了如何运行使用JArgs进行命令行处理的简单Java应用程序。

CmdLineParser类不附带任何内置的帮助/用法支持。 然而,在SourceForge上jargs-1.0.zip提供包括源代码AutoHelpParser ,延伸类CmdLineParser和显示帮助/用法中如何实现。

由于它已经过时并且很简单,因此与本系列中讨论的其他一些基于Java的命令行解析库相比,JArgs可能可以与Java的较早版本一起使用。 当我在Maven提供的jargs-1.0.jar和SourceForge提供的jargs.jar中的CmdLineParser上运行javap以确定使用它编译的Java版本时,我看到它的主要版本为45 ! 正如我在“以编程方式确定Java类的JDK编译版本”一文中所写的那样,主要版本为45表示该代码是使用JDK 1.1编译的!

Maven提供的jargs-1.0.jar版本信息(来自jargs-1.0.jar

Classfile jar:file:/C:/lib/jargs-1.0/lib/jargs-1.0.jar!/jargs/gnu/CmdLineParser.classLast modified Apr 9, 2005; size 6032 bytesMD5 checksum b2d61c0ce786f8a661cccf1e61de2a19Compiled from "CmdLineParser.java"
public class jargs.gnu.CmdLineParserminor version: 3major version: 45

SourceForge提供的jargs.jar版本信息(来自javap)

Classfile jar:file:/C:/lib/jargs-1.0/lib/jargs.jar!/jargs/gnu/CmdLineParser.classLast modified Apr 9, 2005; size 6032 bytesMD5 checksum b2d61c0ce786f8a661cccf1e61de2a19Compiled from "CmdLineParser.java"
public class jargs.gnu.CmdLineParserminor version: 3major version: 45

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

  • JArgs是开源的,并获得BSD许可证的许可。
  • 对于JArgs的版本和主要贡献者似乎有些困惑, Maven和SourceForge具有一个版本,而GitHub上的purcell / jargs具有另一个版本。
  • JArgs既小又简单: jargs.jar (或Maven上的jargs-1.0.jar )只有大约12 KB的大小,并且没有第三方库依赖项。
  • JArgs使用程序化API来定义,解析和询问选项,而不是使用注释或反射。
  • JArgs的日期有些过时,许多主页都有“最新更新”,例如2005年。但是,本文多次引用的GitHub页面,并且其主类具有不同的包名称,显示了其最新更新。是2012年。
  • 我认为JArgs可以与当今的绝大多数Java应用程序一起使用,因为在我看来,JArgs可以与Java SE 1.1之前的 Java版本一起使用。

一个可能不得不使用JArgs而不是其他一些更常用的和/或更近期更新的基于Java的命令行处理的最令人信服的原因是它的简单性和小巧的体积。 有时我会面临一个决定,即我想支持JArgs提供什么级别的命令行选项,而当我想要的不仅仅是直接解析传入的String[]到主函数时,可能需要的库。想要其他一些基于Java的命令行处理库的强大功能和复杂性。 我对使用JArgs的最大担心可能是它已经有一段时间没有更新了,并且可能会导致其他人使用我的工作并不得不处理JArgs的两种不同表现形式,并且其主要类的包名称不同(使用依赖的Maven在这里可能会很有帮助)。 JArgs既小巧又简单,对于那些只希望最基本的命令行处理的人来说,它可能会找到自己的利基。

其他参考

  • JArgs SourceForge页面
  • JArgs在SourceForge上下载
  • Maven上的JArgs
  • Ewan Mellor的页面:“ JArgs:Java的命令行选项解析套件 ”
  • JArgs API文档 (Javadoc)
  • GitHub上的JArgs : purcell / jargs

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

java登录界面命令

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

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

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

python卸载module_Python学习笔记

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

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

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

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

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

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

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