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

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

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

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

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

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

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

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

  4. java登录界面命令_Java命令行界面(第30部分):观察

    java登录界面命令 这个有关Java命令行参数解析的系列文章由四个月来发表的29篇帖子组成,涵盖了28个不同的开放源代码库,可用于解析Java命令行参数. 这篇文章收集了可以从本系列的前29篇文章中 ...

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

    java登录界面命令 这是我系列的第七篇文章,简要介绍了用于处理Java命令行参数的各种库. 这篇文章回到了基于注释的库的覆盖范围,该库似乎是在Java中可用于处理命令行参数的众多可用库中知名度最高, ...

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

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

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

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

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

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

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

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

最新文章

  1. B站王道论坛计算机网络,成都理工大学计算机网络考研学长经验分享
  2. python画五角星-python画五角星和六角星程序 | 学步园
  3. ROS学习(九):ROS URDF-link
  4. MySQL 行锁功过:怎么减少行锁对性能的影响
  5. Maven——常用命令详解
  6. c语言位运算+乘法,关于c语言中的位运算。。。
  7. android 字体 动画,android 对绘制的文本添加动画
  8. Python 列表 list 数组 array
  9. 酒糟怎么处理才能喂母羊?
  10. 性能测试用例、策略和方法
  11. Lecture 2:马尔可夫决策
  12. 芝麻开门-如何解决电脑PIN码忘记了不能登录问题
  13. Java类的三大特性总结
  14. H5py数据集的制作
  15. YUV2RGB Opencv
  16. linux/安卓的spi读写ADS1256出现读写错误
  17. 自己搭建服务器要多少钱?
  18. Chrome 浏览器 原生工具进行网页长截图
  19. 微软模拟飞行2020服务器多少内存,微软模拟飞行配置要求高吗 微软模拟飞行2020配置要求介绍_游侠网...
  20. 图片文件Exif信息详细说明(转)

热门文章

  1. 【学习笔记】线性规划与对偶问题和LP对偶费用流([ZJOI2013]防守战线题解)
  2. CF407 E. k-d-sequence
  3. CF1137F-Matches Are Not a Child‘s Play【LCT】
  4. jzoj6805-NOIP2020.9.26模拟speike【扫描线】
  5. jzoj3794,P1383-高级打字机【欧拉序,离线O(n)】
  6. 面试官:为什么 Spring Boot 的 jar 可以直接运行
  7. 跟我学 Java 8 新特性之 Stream 流(四)并行流
  8. JAVA多线程和并发面试问题
  9. Oracle入门(十四)之PL/SQL
  10. 单例模式懒汉、饿汉和登记