本系列中第19篇文章的重点是从Java代码解析命令行参数是jClap ( Java命令行参数解析器 ),不应将它与称为JCLAP的库相混淆,而JCLAP库是我本系列先前文章的重点。 在以前的帖子覆盖JCLAP 1.4加尔斯吉尔温斯坦利( snaq.net ),而这个帖子盖jClap 2.0由一月所以 ( extreme_logic )。
通过实例化com.extremelogic.common.jclap.Argument的实例并调用名称为addArgument
或addBooleanArgument
的重载方法之一,可以在com.extremelogic.common.jclap.Argument
实现“定义”阶段。 下一个代码清单( 在GitHub上提供完整代码)中对此进行了演示。
jClap的“定义”阶段
final Argument argument = new Argument(arguments);
argument.addArgument("file", "Path/name of file", true, 1);
argument.addBooleanArgument("verbose", "Enables verbosity", false);
前面的代码清单演示了提供长参数名称,参数说明,是否需要参数以及参数期望值的数量。 据我所知,无法为参数添加简称(单个连字符和单个字符)。
通过在“定义”阶段定义的Argument
实例上调用processArguments()
方法,可以通过jClap实现“解析”阶段。 这是单行调用,但会引发检查异常ArgumentException
。 下一行代码清单显示了这种单行解析。
jClap的“解析”阶段
argument.processArguments();
使用jClap通过在“定义”阶段中定义的Argument
实例上调用getArgument
方法来实现“询问”阶段。 下一个代码清单对此进行了演示。
jClap的“审讯”阶段
out.println("File path/name is '" + argument.getArgument("file") + "'.");
out.println("Verbosity is set to " + argument.getArgument("verbose"));
通过在整个示例中使用的Argument
实例上调用displayOptions
方法,jClap还可以轻松地将用法写入标准输出。 在下一个代码清单中对此进行了演示,该清单显示了捕获和“处理”已检查的异常ArgumentException
。
jClap中的“用法”
catch (final ArgumentException argumentException)
{out.println("ERROR: Exception encountered while processing command-line arguments - "+ argumentException);argument.displayOptions();
}
屏幕快照演示了本文中涵盖的代码,其中将jClap应用于命令行处理。 第一个图像描述了未指定必需的--file
ArgumentException
时对检查到的异常ArgumentException
的处理,还描述了jClap提供的用法语句。 第二张图描绘了参数的常规命令行处理。
选择框架或库来帮助Java进行命令行解析时,需要考虑jClap的特征。
- jClap是带有Apache许可证版本2.0的开源。
- commons-jClap-2.0.0.jar JAR大小约为15 KB,没有第三方库依赖项。
- 在我看来,jClap仅支持带有双连字符的“长”参数名称。
- jClap JAR包含使用Java SE 6 ( 主要版本50 )编译的类文件,因此应与运行在Java SE 6之前的版本的Java应用程序一起使用。
- 所有参数都从
Argument
实例作为String
检索(没有类型的参数)。 - jClap JAR还包含一个“样本”应用程序(
SampleArguments.class
),IDE反编译器(例如IntelliJ IDEA的内置反编译器和Eclipse的Enhanced Class Decompiler )可以反编译以查看可以写入的源代码类型。使用jClap。
jClap是一个小型易用的库,用于处理Java的命令行参数,可以与运行在Java SE 6以前的Java版本上的Java应用程序一起使用。该库仅支持长参数名,并以以下形式返回参数的值: String>/code> type in all cases.
翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-19-jclap.html