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登录界面命令

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

  1. java登录界面命令_Java命令行界面(第18部分):JCLAP

    java登录界面命令 Giles Winstanley的JCLAP ( Java命令行参数解析器 )是基于Java的命令行处理库的系列文章中介绍的第18个库. 这篇文章的示例基于JCLAP 1.4 , ...

  2. java登录界面命令_Java命令行界面(第10部分):picocli

    java登录界面命令 picocli主页面将picocli描述为"强大的微小命令行界面"," picocli"是一个单文件Java框架,用于解析命令行参数并生成 ...

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

    java登录界面命令 由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 . CmdOption在其GitHub主页上被描述为"一个通过注释配置的,用 ...

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

    java登录界面命令 第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 (CLAJR). 该"库"是单个Java源文件( CLA ...

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

    java登录界面命令 这篇文章介绍了如何使用Ostermiller Java Utilities 1.08.02的CmdLn(Java命令行解析器)来处理基于Java的应用程序中的命令行参数. Ost ...

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

    java登录界面命令 JArgs 1.0的区别在于,这是我的第13篇文章的主题,该文章是关于Java命令行参数解析的. JArgs是一个开放源代码( BSD许可 )库,主要由Steve Purcell ...

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

    java登录界面命令 Jargo在其GitHub主页上定义为"一种减轻程序参数/选项处理的工具". 当已经存在许多其他命令行处理库时,该页面为另一个命令行处理库提供了基本原理 ,该 ...

  8. java登录界面命令_Java命令行界面(第16部分):JArgp

    java登录界面命令 这篇文章中介绍的基于Java的命令行参数处理库是IBM developerWorks文章Java编程动态性,第3部分,应用的反射 (第2003 部分,此归档文章于2016年&qu ...

  9. java登录界面命令_Java命令行界面(第19部分):jClap

    java登录界面命令 本系列中第19个帖子的重点是从Java代码解析命令行参数是jClap ( Java命令行参数解析器 ),不应与JCLAP库混淆,该库是我本系列前 一篇文章的重点. 上 一篇 文章 ...

最新文章

  1. Ubuntu NFS 服务器和客户端挂载详解
  2. tableview的顶部有一部分空白区域,并不是Cell的解决方法。
  3. selenium框架安装及webdriver安装
  4. ansible最大并发_通过这7种方法来最大程度地提高Ansible技能
  5. android自定义控件 jar,Android Studio引用自定义的framework.jar包
  6. python的sqlite3说明_python之sqlite3使用详解
  7. iOS 为View添加蒙版 当点击背景View移除
  8. 经典SFM步骤——Lowe2005
  9. android 原笔迹,Android-原笔迹手写的探索与开发
  10. 重新连接 到 时出错 Microsoft Windows Network:本地设备名已在使用中
  11. 第三方账号登陆-sina微博_PC篇
  12. Wi-Fi PNO扫描流程(Android P)
  13. LeetCode:第13题 罗马数字转整数 python语言实现 2020.2.3
  14. 苹果cmsV10仿B站风格视频影视电影网站源码
  15. P2P 技术如何降低实时视频直播带宽
  16. OpenCL 2.0 规范 – SVM共享虚拟内存
  17. CentOS 8.3 VNC
  18. graalvm22.3.1打包exe和linux
  19. 词缀temper/tempor/tempt/tend等词根衍生单词
  20. nearest_neighbor

热门文章

  1. P5303 [GXOI/GZOI2019]逼死强迫症(斐波拉契、矩阵乘法)
  2. csp初赛复习(往年真题+解析)
  3. GYM101933I - Intergalactic Bidding
  4. 求凸函数极值 CSF迭代法(雾)
  5. 1、oracle数据库简介
  6. Spring @Autowired 注释
  7. JAVA反射修改常量,以及其局限
  8. 03-映射文件的sql语句中 #{} 和 ${} 的区别以及实现模糊查询
  9. 点滴小组KTV点歌系统简介
  10. 《四世同堂》金句摘抄(十六)