Giles Winstanley 的JCLAP(Java 命令行参数解析器)是本基于 Java 命令行的系列文章中涵盖的第十八个库处理库。这篇文章的示例基于 JCLAP 1.4,它需要 Java 8。 JCLAP 主页面 指出,“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(Java 命令行参数解析器)是一个具有商业友好许可证的小型库,近年来已更新为使用 Java 8 功能。 JCLAP 的作者在项目的主页上写道,“JCLAP 绝不是独一无二的,许多类似的实用程序都可以免费和商业获得。”作者进一步解释说,“现在存在如此多的类似解决方案,再多一个似乎是多余的,但已经创建了 JCLAP,将其公开可用似乎是有益的。”
其他参考资料
标签2: Java教程地址:https://www.cundage.com/article/jcg-java-command-line-interfaces-part-18-jclap.html