Java命令行界面(第17部分):jw-options

JavaWorld文章处理Java中的命令行参数: Matthias Laux博士关闭的案例介绍了一个基于Java的简单库,用于处理命令行参数 ,在本文中我将其称为jw-options 。 被引用的文章提供了有关为何在构造Options类时做出某些设计决策的背景信息。 本文的“结论”描述了使用附带的类和库的优点:“本文描述了一个Java类,该类允许方便地处理Java程序的命令行选项。 该结构足够灵活,甚至可以处理复杂的情况,同时提供了API,可以用有限的编码工作来定义可接受的命令行语法。

JavaWorld文章介绍的“库”包含三个Java类: OptionsOptionDataOptionSet 。 下面的屏幕快照演示了这一点,该屏幕快照显示了options.jar的内容。

带有“ jw-options”的“定义”阶段是通过其OptionsOptionSet类实现的。 下一个代码清单中对此进行了演示(完整的代码清单可在GitHub上找到,并且此处的示例类似于本系列先前文章中使用的示例)。

带有jw-options的“定义”阶段

final Options options = new Options(arguments, Multiplicity.ZERO_OR_ONE);
final OptionSet defaultOptions = options.getSet();
defaultOptions.addOption("f", false, Separator.BLANK, Multiplicity.ONCE);
defaultOptions.addOption("v", Multiplicity.ZERO_OR_ONE);

刚刚显示的代码清单演示了如何使用几个OptionSet的重载addOption方法。 为了设置文件路径和名称( -f )选项,将调用四参数版本,其中包含标志的单字母(f),标志与其参数之间的分隔符(空格)以及应当预期标志的次数(恰好发生一次)。 冗长性的第二个参数(-v)通过调用addOption的两个参数版本来addOption ,该版本指定标志的字符(v)及其预期出现的次数(零出现或单出现)。

通过调用Optionscheck方法,可以在“ jw-options”中实现“解析”阶段。 顾名思义,此方法也可用于检查参数的准确性。 下一个代码清单对此进行了演示。

使用jw-options的“解析”阶段

if (!options.check(false, false))
{out.println("ERROR: " + options.getCheckErrors());System.exit(-1);
}

在刚刚显示的“解析”示例中,使用了Options类的方法getCheckErrors()来访问解析后的参数中的错误,这些错误导致Options.check方法返回false

下一个代码清单中演示了带有“ jw-options”的“询问”阶段。

jw-options的“审讯”阶段

out.println("File path/name is " + defaultOptions.getOption("f").getResultValue(0));
out.println("Verbosity is set to " + defaultOptions.isSet("v"));

“询问”示例演示了如何使用OptionSetgetOption方法访问表示“ -f”选项的选项,然后调用其getResultValue(0)方法访问与该“ -f”关联的第一个(也是在这种情况下)值”标志。 该示例的第二行仅通过使用OptionSet的方法isSet查询是否已指定“ -v”标志(并且不必担心或期望与该标志关联的值)。

接下来显示一个屏幕快照,以演示到目前为止显示的使用“ jw-options”的代码。 该图显示了未提供预期的命令行参数时报告的消息,并以两个示例按预期使用命令行标志结尾。

选择框架或库来帮助Java进行命令行解析时,要考虑“ jw-options”的特征。

  • “ jw-options”“库”是开放源代码,因为它的源代码已在JavaWorld文章“ 在Java中处理命令行参数:关闭案例且源代码包含在JAR中可供下载 ”中进行了全面介绍和讨论。 作为jw-0816-command.zip ZIP文件。” 但是,该“图书馆”的许可证并不明显。
  • “ jw-options”库很小: options.jar文件的大小约为13 KB。
  • 据我所知,没有办法用“ jw-options”用双连字符指定“长”标志名。
  • 在“ jw-options” jar中的类上运行的javap命令显示“ main version:49 ”,这意味着它是针对J2SE 5编译的,并且可以与运行于J2SE 5的 Java上的应用程序一起使用(我注意到在Java中使用StringBuffer代码在StringBuilder也可以正常工作)。

这篇文章中讨论的“ jw-options”“库”最有可能引起那些需要将命令行处理库与旧版Java结合使用或对学术有兴趣的人。 因为此“库”在相关的JavaWorld文章中进行了详细描述,并且因为它是开源的,所以人们可以仔细阅读代码并查看该文章,以了解其如何完成命令行解析以及为什么使用这种方法。 鉴于“ jw-options”的许可证不明显,并且鉴于这是一个相对“老”的库,似乎没有收到更新,因此大多数Java开发人员可能更喜欢本文档中介绍的某些替代库。在许多情况下,“ jw-options”上的序列。

其他参考

  • JavaWorld文章: 在Java中处理命令行参数:案例关闭
  • 下载源代码和库Zip文件

翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-17-jw-options.html

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

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

相关文章

便捷式计算机无线功能按钮,TP-Link TL-MR13U便携式无线路由器Client模式设置

本文介绍了TP-Link TL-MR13U便携式无线路由器,在“客户端模式(Client)”下的设置方法。TL-MR13U工作在“客户端模式(Client)”时,主要作用是用来接收无线WiFi信号,把无线WiFi信号转换为有线网络,实现让台式电脑上网。TP-Link TL-M…

Java命令行界面(第6部分):JOpt简单

JOpt Simple的主页将这个基于Java的库称为“用于解析命令行选项的Java库,例如您可能传递给调用javac的Java库,”该Java库试图“使用POSIX getopt()的命令行选项语法)和GNU getopt_long() 。” 这…

计算机c盘哪些东西可以清理,细说电脑c盘哪些文件可以删除

有些网友反映,自己看C盘里的文件太多了,电脑又太卡,情急之下就把里面的东西删掉了,现在系统都不能用了。为了避免大家再入这个坑,我给大家讲一下哪些是C盘里的无用文件,并且删除后不会影响系统使用C盘是指电…

软件测试度量计算方法有哪些,软件测试度量(三)

进度差异趋势6.4.3 范围变化(SC)这个指标指出如何固定测试范围。下面总范围 以前的范围 新范围,如果范围扩大的话总范围 以前的范围 - 新范围,如果范围缩小的话一个发布版本范围变化趋势7、结论度量是评估的重要组成部分以及任何业务改进的基础。是应…

使用带有OAuth的Spring Security保护资源

1.简介 在本教程中,我们将研究如何使用Spring Security和OAuth来基于路径模式( / api / ** )保护服务器上的管理资源。 我们配置的另一个路径模式( / oauth / token )将帮助已配置的授权服务器生成访问令牌。 请注意&a…

openjpa_OpenJPA:内存泄漏案例研究

openjpa本文将提供完整的根本原因分析详细信息以及解决影响Oracle Weblogic Server 10.0生产环境的Java堆内存泄漏(Apache OpenJPA泄漏)的方法。 这篇文章还将演示在管理javax.persistence.EntityManagerFactory生命周期时遵循Java Persistence API最佳实…

美国凯斯西储大学计算机硕士专业怎么样,在凯斯西储大学读硕士大约需要多少花费?...

凯斯西储大学是美国著名大学之一,始建于1826年,坐落于俄亥俄州的克里夫兰,是一所以独立研究闻名的世界顶级私立大学,美国一级国家级大学。美国作为当今世界留学费用最高的国家之一,费用问题是所有赴美留学的学生都非常…

win7如何修改dns服务器地址,Win7系统DNS怎么设置?Win7系统DNS设置方法

Win7系统DNS怎么设置?众所周知,DNS地址是一个域名服务器地址,它可以把用户的网站地址解析成IP地址。如果这个服务器出现问题,可能就上不了网了。我们在使用Win7系统的时候,就是因为域名解析服务器不能将要访问的域名解析为正确的…

密钥文件登录服务器,密钥文件登录云服务器

密钥文件登录云服务器 内容精选换一换远程桌面协议(Remote Desktop Protocol,RDP),是微软提供的多通道的远程登录协议。本节为您介绍如何使用RDP文件远程登录Windows弹性云服务器。从管理控制台下载的RDP文件对应唯一的云服务器,当前RDP文件命…

一个网站服务器有多少个ip,一个服务器可以有多少个ip地址

一个服务器可以有多少个ip地址 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。会话保持,指负载均衡器可以识别客户与服…

jbpm小项目测试_尝试使用jBPM Console NG(测试版)

jbpm小项目测试大家好! 这是有关jBPM Console NG的另一篇文章。 经过6个月的辛苦工作,我很高兴为开发人员社区撰写这篇文章,以进行尝试。 在这篇文章中,我将解释如何从源代码构建应用程序。 这背后的主要思想是知道如何在测试过程…

用友数据库服务器如何修改,用友u8数据库服务器怎么设置

用友u8数据库服务器怎么设置 内容精选换一换本章介绍如何在管理控制台购买GaussDB(for openGauss)实例,并通过内网使用弹性云服务器连接GaussDB(for openGauss)实例。GaussDB(for openGauss)提供gsql工具帮助您在命令行下连接数据库,您需要提前创建一台弹…

hibernate批量查询_使用Hibernate批量获取

hibernate批量查询如果需要从Java处理大型数据库结果集,则可以选择JDBC,以提供所需的低级控制。 另一方面,如果您已在应用程序中使用ORM,则回退到JDBC可能会带来一些额外的麻烦。 在导航域模型时,您将失去诸如乐观锁定…

Java 9迁移指南:七个最常见的挑战

我确定您已经听说过更新到Java 9并不是一件容易的事,甚至可能是不兼容的更新,而且对于大型代码库而言,迁移毫无意义。 这样做之后,我迁移了一个相当大的旧代码库,我可以告诉你,这还不错。 比碰到Java 8确实…

nuxt sass 全局变量的问题_Sass入门教程

SASS(Syntactically Awesome Stylesheet)是一个CSS预处理器,有助于减少CSS的重复,节省时间。 它是更稳定和强大的CSS扩展语言描述文档的风格结构。sass中文网而且Sass算是CSS的超集,它100%兼容CSS的语法,所有在 CSS 中正常工作的代…

用C语言实现优先级排序和MATLABsort函数的比较

为了实现对两个数组进行优先级排序,用c语言有两种实现方法, 一是需要对两个数组进行排序,然后对排序后的坐标再排序,(求最小值是我自己需要) 二是直接寻找数组排序后的元素坐标,调用qsort函数进行排序,排序后的数组会存放在原数组中,那么就有两种寻找坐标,一是寻找…

造成内存泄漏_如何造成内存泄漏

造成内存泄漏这将是一个相当邪恶的职位-当您确实希望使某人的生活陷入困境时,您将在谷歌上搜索。 在Java开发领域,内存泄漏只是您在这种情况下会引入的错误类型。 为您的受害者保证几天甚至几周的办公室不眠之夜。 我们将在这篇文章中描述两次泄漏。 两…

通过Java,Spring Boot应用程序将Gmail用作SMTP服务器

Gmail用户可以使用Gmail的SMTP服务器smtp.gmail.com从其Spring Boot应用程序发送电子邮件。 为此,让我们在应用程序中进行一些设置: 在application.properties文件中提供SMTP连接属性: spring.mail.hostsmtp.gmail.com spring.mail.username…

在建工地扬尘在线监控系统推荐_配电室为何需要安装蓄电池在线监控系统?保定钰鑫电气...

配电室蓄电池在线监控系统提高了蓄电池运行质量、增强了电力系统的安全运行、保障蓄电池运行环境的可靠,打造无人值守配电室、智能化运维模式,减少蓄电池损耗、浪费,降低了维护成本,为何需要安装一套配电室蓄电池在线监测系统&…

最好的Java开发人员测试和集成工具

通过从应用程序中学习企业APM产品,发现更快,更高效的性能监控。 参加AppDynamics APM导览! 无论您是刚开始还是已经使用了一段时间,使用正确的工具进行编程都可以对项目的成功产生巨大的影响。 适当的工具使您可以编写更好的代码…