Java 命令行接口(第 18 部分):JCLAP

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(463)   2024-01-23 15:34:57

Giles WinstanleyJCLAPJava 命令行参数解析器)是本基于 Java 命令行的系列文章中涵盖的第十八个库处理库。这篇文章的示例基于 JCLAP 1.4,它需要 Java 8JCLAP 主页面 指出,“JCLAP 帮助 Java 开发人员为其应用程序创建简单易用的命令行界面。”

“定义”阶段是使用 JCLAP 通过调用 CLAParser 对象 上的“addXXXXXOption”方法来完成的。与本系列前面几篇文章中的示例一样,这篇文章的示例定义了两个命令行选项,一个用于文件路径和名称,一个用于启用详细信息。下一个代码清单演示了如何使用 JCLAP 定义这两个命令行选项(完整代码清单可在 GitHub 上获取)。

JCLAP 的“定义”阶段

final CLAParser parser = new CLAParser();
final Option<String> fileNameOption
   = parser.addStringOption("f", "file", "Path/name of the file.", 1, 1);
final Option<Boolean> verbosityOption
   = parser.addBooleanOption("v", "verbose", "Verbosity enabled?");

刚刚显示的代码清单表明 JCLAP 支持长参数名和短参数名、提供描述的能力以及指定每个参数出现的最小和最大次数的能力。

“解析”阶段是通过 JCLAP 实现的,只需调用方法 CLAParser.parse(String[]),尽管该方法会抛出已检查的异常 OptionException

使用 JCLAP 的“解析”阶段

parser.parse(arguments);

“询问”阶段在 JCLAP 中以不同的方式实现,但我在这里使用的方法是使用重载的 CLAParser.getOptionValue() 方法之一。

JCLAP 的“审讯”阶段

out.println("File path/name is " + parser.getOptionValue(fileNameOption));
out.println("Verbosity is " + (parser.getOptionValue(verbosityOption) != null));

JCLAP 还支持自动使用语句创建。下一个代码清单演示了在与捕获已检查的 OptionException 关联的块中调用重载的 CLAParser.printUsage() 方法之一。

使用 JCLAP 的自动使用声明

catch (OptionException optionException)
{
   out.println("Exception: " + optionException);
   parser.printUsage(out, true);
}

下面的两个屏幕快照描述了实际的代码示例。第一个屏幕快照显示了未提供参数时 JCLAP 生成的用法语句。第二张图片显示了为两个参数应用长标志名和短标志名的“快乐路径”。

在选择框架或库以帮助在 Java 中进行命令行解析时,需要考虑 snaq.net JCLAP 的一些特性。

  • JCLAP 是开源的,具有项目页面中描述的“BSD 样式许可证”。
  • jclap-1.4.jar JAR 文件大小约为 46 KB,没有第三方库依赖项。
  • 不同版本的 JCLAP 是为不同版本的 Java 而设计的。
    • JCLAP 1.4 需要 Java 8
    • JCLAP 1.3 需要 Java 7
    • JCLAP 1.2 适用于 Java 6
  • JCLAP 的作者通过通过电子邮件请求提供了潜在的支持和错误修复。
  • JCLAP 为国际化和本地化提供一些支持。

JCLAP(Java 命令行参数解析器)是一个具有商业友好许可证的小型库,近年来已更新为使用 Java 8 功能。 JCLAP 的作者在项目的主页上写道,“JCLAP 绝不是独一无二的,许多类似的实用程序都可以免费和商业获得。”作者进一步解释说,“现在存在如此多的类似解决方案,再多一个似乎是多余的,但已经创建了 JCLAP,将其公开可用似乎是有益的。”

其他参考资料

  • JCLAP 主页
  • JCLAP 1.4 API 文档 (Javadoc)
  • JCLAP 1.4Maven2Repo.com
标签2: Java教程
地址:https://www.cundage.com/article/jcg-java-command-line-interfaces-part-18-jclap.html

相关阅读

Java HashSet 教程展示了如何使用 Java HashSet 集合。 Java哈希集 HashSet 是一个不包含重复元素的集合。此类为基本操作(添加、删除、包含和大小)提供恒定时间性...
SpringApplicationBuilder 教程展示了如何使用 SpringApplicationBuilder 创建一个简单的 Spring Boot 应用程序。 春天 是用于创建企业应...
通道是继 buffers 之后 java.nio 的第二个主要新增内容,我们在之前的教程中已经详细了解了这一点。通道提供与 I/O 服务的直接连接。 通道是一种在字节缓冲区和通道另一端的实体(通...
课程大纲 Elasticsearch 是一个基于 Lucene 的搜索引擎。它提供了一个分布式的、支持多租户的全文搜索引擎,带有 HTTP Web 界面和无模式的 JSON 文档。 Elasti...
解析器是强大的工具,使用 ANTLR 可以编写可用于多种不同语言的各种解析器。 在这个完整的教程中,我们将: 解释基础:什么是解析器,它可以用来做什么 查看如何设置 ANTLR 以便在 Java...
Java 是用于开发各种桌面应用程序、Web 应用程序和移动应用程序的最流行的编程语言之一。以下文章将帮助您快速熟悉 Java 语言,并迈向 API 和云开发等更复杂的概念。 1. Java语言...
Java中的继承是指子类继承或获取父类的所有非私有属性和行为的能力。继承是面向对象编程的四大支柱之一,用于提高层次结构中类之间的代码可重用性。 在本教程中,我们将了解 Java 支持的继承类型,...
Java Message Service 是一种支持正式通信的 API,称为 网络上计算机之间的消息传递。 JMS 为支持 Java 程序的标准消息协议和消息服务提供了一个通用接口。 JMS 提...
之前,我介绍了spring 3 + hibernate 集成 示例和struts 2 hello world 示例。在本教程中,我将讨论在将 spring 框架与 struts 与 hibern...
Java 项目中的一项常见任务是将日期格式化或解析为字符串,反之亦然。解析日期意味着你有一个代表日期的字符串,例如“2017-08-3”,你想把它转换成一个代表 Java 中日期的对象,例如Ja...