java登录界面命令_Java命令行界面(第7部分):JCommander

java登录界面命令

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

JCommander的网页上指出:“因为寿命太短,无法解析命令行参数”,并且概述将JCommander引入为“一个很小的Java框架,使得解析命令行参数变得微不足道。” 这篇文章中的代码示例和执行代码的关联屏幕快照均基于JCommander 1.72 (2017年6月)。 此处显示的演示的完整代码可在GitHub上找到 。

JCommander使用批注来实现命令行处理的“定义”阶段。 下一个代码清单片段中对此进行了演示。

JCommander的“定义”阶段

/*** Demonstrates use of JCommander for Java-based command-line processing.*/
public class Main
{@Parameter(names={"-v","--verbose"},description="Enable verbose logging")private boolean verbose;@Parameter(names={"-f","--file"},description="Path and name of file to use",required=true)private String file;@Parameter(names={"-h", "--help"},description="Help/Usage",help=true)private boolean help;// . . .final JCommander commander= JCommander.newBuilder().programName("JCommander Demonstration").addObject(this).build();

刚刚显示的代码清单演示了如何使用JCommander的@Parameter批注通过类字段的批注来定义命令行选项。 这些示例演示了names说明,以指示与单个选项相关联的多个选项标志;提供description以提供每个选项的说明; required=true以强制存在命令行参数, help=true以指示“帮助”。 ”或“使用”命令行参数(如果未提供必需的参数,则指示JCommander不要抛出异常)。

通过用@Parameter注释注释的类属性,可以将带有注释字段的类的实例用于创建JCommander类的实例。 在上面的代码示例中,我利用了JCommander.Builder以获得与使用构建器相关的更大的流利性和其他优势。 特别是,带有注释的类字段的实例是通过addObject(Object)方法添加的。

通过对刚刚实例化的JCommander实例执行parse(String…)方法的单行调用,可以完成JCommander命令行处理的“解析”阶段。 下一个代码清单中对此进行了演示。

使用JCommander进行“解析”阶段

commander.parse(arguments);

使用JCommander进行命令行处理的“询问”阶段涉及简单地访问传递给JCommander类实例化的实例的带注释的字段。 下一个代码清单中对此进行了演示。

JCommander的“审讯”阶段

if (help)
{commander.usage();
}
else
{out.println("The file name provided is '" + file + "' and verbosity is set to " + verbose);
}

最后一个代码清单演示了确定--help-h规范是否设置名称为helpboolean属性的能力。 由于它是一个简单的boolean ,因此可以在条件条件中使用,如果为true ,则可以显示帮助/使用信息。 在未设置“ help”标志的情况下,将访问与其他命令行选项关联的值(“ verbose” / -v / --verbose和“ file” / -f / --file )。

最新的代码清单还演示了如何通过在JCommander类的实例上调用方法JCommander ()将用法信息写入标准输出。 值得注意的是ParameterException也有一个usage()方法 。

下一系列屏幕快照演示了如何将JCommander与包含上述代码段的简单应用程序一起使用。 第一个图像显示了不带任何参数的基于JCommander的应用程序的运行,并且显示了在这种情况下显示的ParameterException ,因为未指定必需的--file / -f选项。

当提供了预期的命令行参数时,下一个屏幕快照将演示“正常”执行。

下一个屏幕快照演示了“帮助”选项的使用。 由于使用help=true进行了注释,因此缺少必需的“文件”命令行参数不会导致异常,并且自动生成的帮助/使用信息将写入标准输出。

JCommander提供了我非常喜欢的用于开发和学习JCommander的功能。 可以通过在JCommandBuilder上调用verbose(int)方法来指定JCommander解析的详细 程度 。

增加JCommander的详细程度

final JCommander commander= JCommander.newBuilder().programName("JCommander Demonstration").addObject(this).verbose(1).build();

随着冗长程度的提高,可以发现对JCommander正在执行的与命令行处理有关的更深入的了解,并在以下两个屏幕快照中得以证明。

在选择框架或库来帮助Java进行命令行解析时,需要考虑JCommander的一些其他特征。

  • JCommander是开源的,并获得了Apache License 2.0的许可 。
  • jcommander-1.72.jar大小约为68 KB,没有第三方库编译依赖项。
  • JCommander文档提供了将JCommander与Kotlin一起使用以及将JCommander与Groovy 一起使用的示例 。
  • JCommander仍然得到TestNG创作者Cedric Beust的积极支持, 其网页反映了其现代/当前的支持。

其他参考

  • 指挥官
  • Maven存储库上的JCommander
  • GitHub上的JCommander来源
  • JCommander API (Javadoc)
  • 使用JCommander的复杂行命令语法
  • JCommander –轻松解析命令行参数
  • 使用JCommander轻松进行命令行界面编码
  • Args4j vs JCommander用于解析命令行参数
  • 使用JCommander和Spring的Java命令行标志
  • JCommander与args4j

翻译自: https://www.javacodegeeks.com/2017/07/java-command-line-interfaces-part-7-jcommander.html

java登录界面命令

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

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

相关文章

java体系技术框架_java框架之Spring 核心框架体系结构

很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下一次创建相同类型的工程时也不知道要配置哪…

IntelliJ IDEA中打开项目时用 Import Project(导入项目) 和 Open(打开项目) 的区别

文章目录创建测试目录使用 Open 方式打开用 Import Project 方式打开用 Open 方式打开文件夹下的多个项目用 Import Project 的方式打开多个项目总结对于 IDEA 中如下图所示的 Import Project 和 Open Project 的区别,一开始不明白怎么回事,网上看了很多…

java命令模式返回值_JAVA 设计模式 命令模式

目录用途命令模式 (Command)将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或请求日志,以及支持可撤销的操作。命令模式是一种行为型模式。结构图-命令模式结构图Command: 用来声明执行操作的接口。abstract…

IntelliJ IDEA for Mac 如何创建普通的Java项目_创建项目_新建项目

文章目录创建 Java 新项目的流程普通 Java 项目结构Java 项目结构特例讲解创建 Java 新项目的流程 Create New Project Empty Project (1)选择【Empty Project】,则项目不会自动创建模块,项目创建成功之后,会自动弹出…

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

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

aws高额账单_取消堆放以提高延迟并减少AWS账单

aws高额账单大多数性能问题可以通过几种不同的方式解决。 多数人都容易理解和应用许多适用的解决方案。 一些解决方案(例如从JVM管理的堆中删除某些数据结构)更加复杂。 因此,如果您不熟悉此概念,我建议您继续学习我们最近如何减少…

Iphone 手机如何导入/导出通讯录

打开苹果云官网,选择「通讯录」,点击左下角的「设置」,可以看到导入/导出菜单 点击进入 icloud 官网

intellij远程调试_IntelliJ中的远程调试Wildfly应用程序

intellij远程调试远程调试Java应用程序意味着使用本地开发环境连接到远程运行的应用程序。 Java开箱即-agentlib:jdwp[options]支持远程调试:目标应用程序必须使用-agentlib:jdwp[options]选项执行, -agentlib:jdwp[options]选项加​​载Java调试线协议&…

微信小程序注册/登录接口开发

文章目录后端有关说明前端有关说明接口设计小程序注册/登录接口APP 注册/登录接口PC Web 端的注册/登录接口小程序注册/登录序列图校验 token后端有关说明 登录和注册的逻辑要独立抽取写成2个接口:注册接口、登录接口 小程序、APP、PC端的登录接口和注册接口要分开…

couchbase_使用Portworx和Couchbase的有状态容器

couchbase容器本应是短暂的,因此可以很好地扩展以用于无状态应用程序。 有状态的容器(例如Couchbase)需要区别对待。 管理Docker容器的持久性概述了如何管理有状态容器的持久性。 该博客将说明如何使用Docker Volume Plugins和Portworx创建有…

在 MyEclipse 中配置 tomcat

在 IDE 配置 tomcat 实则就是让 IDE 来管理 tomcat 配置 步骤 1 点击工具栏上的“Run/Stop/Restart MyEclipse Servers”图标旁边的下拉箭头 步骤 2 选择“Configure Server” 步骤 3 在弹出的对话框“Preferences”中展开“MyEclipse” – “Servers” – “Tomcat”–“To…

java 中怎么加汉字,jquery怎么向body里面增加文字

jquery如何向里面增加文字jsp代码是这样的:我想在页面加载时动态的将一行文字增加到里面,不知道为什么总是加不进去,js代码如下:$(document).ready(function(){if($("#type").val()"MESSAGE") {$(".ke-t…

MacBook 推出移动硬盘时总是提示有程序在使用它,如何解决?

如下图所示: 先使用命令 df -lh 在终端查看当前系统的所有硬盘,命令如下: liaowenxiongliaowenxiongdeMacBook-Air ~ % df -lh Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk1s5s1 234Gi…

java登录界面命令_Java命令行界面(第5部分):JewelCli

java登录界面命令细算在Java命令行处理与Apache的百科全书CLI , args4j , jbock和命令行中先前的文章,我把注意力转向在这个岗位使用JewelCli完成的命令行参数相似的处理Java中。 几个Java命令行处理库使用批注来定义命令行选项。 到目前为止…

matlab 三维图像配准,[转载]Matlab实现多种图像配准(转)

本文讲述如何利用Matlab Image Processing Toolbox中的图像配准工具实现线性正投影、仿射、投影、多项式、分段线性、局部加权平均配准的过程。实验平台X86 PC,Windows XP sp2, Matlab 7.1资源的获取matlab工具的使用方法:查看帮助mage Processing Toolb…

oauth2和jwt_OAuth2,JWT,Open-ID Connect和其他令人困惑的事物

oauth2和jwt免责声明 如果觉得我必须从一个重要的免责声明开始这篇文章: 不要太相信我要说的话。 我之所以这样说,是因为我们正在讨论安全性。 而且, 当您谈论安全性时,除了100%正确的陈述外,还有冒任何其他…

matlab的exec程序,C++调用Matlab画图的一段程序

劳动节闲来无事,写了一天程序,just for fun.看,这是C调用Matlab画图的一段程序。暂时不想多解释了,有兴趣的话,看看下面的代码吧。以下几段代码由上到下,越来越旧。最上面的是最新更新的版本。#include#inc…

java args_Java命令行界面(第2部分):args4j

java args在上一篇文章中 ,我研究了使用Apache Commons CLI在Java应用程序中解析命令行参数。 在本文中,我将使用另一个库args4j进行相同的操作。 args4j采用了一种不同于Commons CLI的方式来指定Java应用程序应期望的命令行参数。 尽管Commons CLI期望…

apache camel_Apache Camel中的短重试与长重试

apache camel《骆驼设计模式》一书介绍了20种模式以及用于设计基于Apache Camel的集成解决方案的众多技巧和最佳实践。 每种模式都基于真实的用例,并提供了Camel特定的实现细节和最佳实践。 为了让您有这本书的感觉,以下是该书的重试模式摘录&#xff0c…

mega5安装包_[MEGA DEAL] 2017年完全Java捆绑包(95%折扣)

mega5安装包深入了解编程奥德赛(58小时!),进入最常用的编程语言 嘿,怪胎, 本周,在我们的JCG Deals商店中 ,我们提供了一个极端的报价 。 我们提供的2017 Complete Java Bundle 仅…