dedecms手机网站制作,动漫wordpress主题,wordpress如何加html代码,网络卖货怎么卖java登录界面命令JArgs 1.0的区别在于#xff0c;这是我的第13篇文章的主题#xff0c;该文章是关于Java命令行参数解析的。 JArgs是一个开放源代码#xff08; BSD许可 #xff09;库#xff0c;主要由Steve Purcell和Ewan Mellor等 不同贡献者支持。 事实证明#xff0… java登录界面命令 JArgs 1.0的区别在于这是我的第13篇文章的主题该文章是关于Java命令行参数解析的。 JArgs是一个开放源代码 BSD许可 库主要由Steve Purcell和Ewan Mellor等 不同贡献者支持。 事实证明这在第一次使用JArgs时可能会引起一些混乱因为程序包名称和其他详细信息会根据您应用的JArgs版本而变化。 JArgs项目页面将JArgs描述为“供Java程序员使用的便捷紧凑预先打包并有详尽文档的命令行选项解析器套件。” 该页面断言可能会选择JArgs而不是其他基于Java的命令行处理库因为JArgs“易于使用经过全面测试有据可查且已获得广泛许可BSD许可因此不会出现GNU混乱”。 该页面还指出“该软件包很小没有多余的装饰但功能齐全并且包含已投入生产使用相当一段时间的代码。” JArgs确实很小。 jargs-1.0.zip文件的大小不足200 KB而提取的核心jargs.jar仅约12 KB。 没有第三方库依赖项。 以下屏幕快照演示了从SourceForge下载的jargs.jar的内容 Maven存储库中可用的jargs-1.0.jar 与此类似。 对于JArgs文档包括其主要Javadoc生成API文档和代码示例如OptionTest和CustomOptionTest 。 使用JArgs时使用的主要类是CmdLineParser jargs.gnu.CmdLineParser或com.sanityinc.jargs.CmdLineParser取决于您在何处获得JArgs的发行版以及所获得的版本。 如果使用通过SourceForge下载或通过Maven存储库 提供的JArgs JAR则将使用的主要类是jargs.gnu.CmdLineParser 。 另一方面如果您从GitHubpurcell / jargs上的可用源构建JArgs则主类将为com.sanityinc.jargs.CmdLineParser 。 无论哪种情况都只有一个CmdLineParser外部类并且它使用嵌套类来提供额外的支持。 在这篇文章中我将使用jargs.gnu.CmdLineParser演示基于SourceForge / Maven JAR的jargs.gnu.CmdLineParser 。 我的示例的完整源代码将发布在GitHub上并且可能会对该版本进行编辑以利用更明确的导入来提高代码的简洁性和可读性。 JArgs很小因此令人惊讶地很简单。 它没有提供很多精美的功能但是它确实使用不使用注释或反射的简单编程方法来执行基本的命令行参数处理。 为了实现使用JArgs解析命令行参数的“定义”阶段需要实例化CmdLineParser类的实例并为每个预期的命令行选项在该实例上调用addOptionCmdLineParser.Option方法 。 每个选项都由扩展CmdLineParser.Option类的类的实例表示。 在本系列的示例中我一直在使用基于字符串的文件路径/名称选项和基于布尔的详细选项。 因此在将JArgs用于这些示例时可以将CmdLineParser.Option.StringOption类用作文件路径和名称将CmdLineParser.Option.BooleanOption类用作详细选项。 下一个代码清单演示了使用JArgs实现“定义”阶段的过程。 JArgs的“定义”阶段 public static void main(final String[] arguments)
{final CmdLineParser cmdLineParser new CmdLineParser();final CmdLineParser.Option fileOption new CmdLineParser.Option.StringOption(f, file);cmdLineParser.addOption(fileOption);final CmdLineParser.Option verbosityOption new CmdLineParser.Option.BooleanOption(v, verbose);cmdLineParser.addOption(verbosityOption); 使用JArgs进行“解析”仅需要一条语句但是您确实需要捕获CmdLineParser.parseString []方法引发的两个检查的异常或明确声明这些异常是从使用method调用的代码中引发的。 这显示在下一个代码清单中。 JArgs的“解析”阶段 try
{cmdLineParser.parse(arguments);
}
catch (CmdLineParser.IllegalOptionValueException | CmdLineParser.UnknownOptionException exception)
{out.println(Unable to parse command line options - exception);System.exit(-1);
} 当刚刚显示的代码成功执行没有引发两个检查的异常之一时在其上调用parse(String[])方法的CmdLineParser实例现在包含为预期的命令行选项分析的值因此我们准备“审讯”该实例。 JArgs命令行选项处理的“询问”阶段使用前面讨论的CmdLineParser.Option -extended类上的方法来检索为每个选项解析的值。 CmdLineParser.getOptionValue()方法的重载版本用于执行此询问。 如果未找到或解析选项则仅接受需要其值的Option实例的方法[ getOptionValueCmdLineParser.Option ]返回null 。 如果未找到或解析该选项则接受需要其值的Option实例和第二个“默认”对象[ getOptionValueCmdLineParser.OptionObject ]的方法将返回提供的默认对象。 在下面的代码清单中我在两种情况下都使用了第二种形式从而确保不必处理null 。 JArgs的“审讯”阶段 final String filePathName cmdLineParser.getOptionValue(fileOption, null).toString();
if (filePathName.equals(null))
{out.println(ERROR: File path/name must be provided.);System.exit(-2);
}
out.println(File path/name is filePathName and verbosity is cmdLineParser.getOptionValue(verbosityOption, false) .); 有了这些基本代码示例下面的屏幕快照中演示了如何运行使用JArgs进行命令行处理的简单Java应用程序。 CmdLineParser类不附带任何内置的帮助/用法支持。 然而在SourceForge上jargs-1.0.zip提供包括源代码AutoHelpParser 延伸类CmdLineParser和显示帮助/用法中如何实现。 由于它已经过时并且很简单因此与本系列中讨论的其他一些基于Java的命令行解析库相比JArgs可能可以与Java的较早版本一起使用。 当我在Maven提供的jargs-1.0.jar和SourceForge提供的jargs.jar中的CmdLineParser上运行javap以确定使用它编译的Java版本时我看到它的主要版本为45 正如我在“以编程方式确定Java类的JDK编译版本”一文中所写的那样主要版本为45表示该代码是使用JDK 1.1编译的 Maven提供的jargs-1.0.jar版本信息来自jargs-1.0.jar Classfile jar:file:/C:/lib/jargs-1.0/lib/jargs-1.0.jar!/jargs/gnu/CmdLineParser.classLast modified Apr 9, 2005; size 6032 bytesMD5 checksum b2d61c0ce786f8a661cccf1e61de2a19Compiled from CmdLineParser.java
public class jargs.gnu.CmdLineParserminor version: 3major version: 45 SourceForge提供的jargs.jar版本信息来自javap Classfile jar:file:/C:/lib/jargs-1.0/lib/jargs.jar!/jargs/gnu/CmdLineParser.classLast modified Apr 9, 2005; size 6032 bytesMD5 checksum b2d61c0ce786f8a661cccf1e61de2a19Compiled from CmdLineParser.java
public class jargs.gnu.CmdLineParserminor version: 3major version: 45 这是选择框架或库来帮助Java进行命令行解析时要考虑的JArgs的特征。 JArgs是开源的并获得BSD许可证的许可。 对于JArgs的版本和主要贡献者似乎有些困惑 Maven和SourceForge具有一个版本而GitHub上的purcell / jargs具有另一个版本。 JArgs既小又简单 jargs.jar 或Maven上的jargs-1.0.jar 只有大约12 KB的大小并且没有第三方库依赖项。 JArgs使用程序化API来定义解析和询问选项而不是使用注释或反射。 JArgs的日期有些过时许多主页都有“最新更新”例如2005年。但是本文多次引用的GitHub页面并且其主类具有不同的包名称显示了其最新更新。是2012年。 我认为JArgs可以与当今的绝大多数Java应用程序一起使用因为在我看来JArgs可以与Java SE 1.1之前的 Java版本一起使用。 一个可能不得不使用JArgs而不是其他一些更常用的和/或更近期更新的基于Java的命令行处理的最令人信服的原因是它的简单性和小巧的体积。 有时我会面临一个决定即我想支持JArgs提供什么级别的命令行选项而当我想要的不仅仅是直接解析传入的String[]到主函数时可能需要的库。想要其他一些基于Java的命令行处理库的强大功能和复杂性。 我对使用JArgs的最大担心可能是它已经有一段时间没有更新了并且可能会导致其他人使用我的工作并不得不处理JArgs的两种不同表现形式并且其主要类的包名称不同使用依赖的Maven在这里可能会很有帮助。 JArgs既小巧又简单对于那些只希望最基本的命令行处理的人来说它可能会找到自己的利基。 其他参考 JArgs SourceForge页面 JArgs在SourceForge上下载 Maven上的JArgs Ewan Mellor的页面“ JArgsJava的命令行选项解析套件 ” JArgs API文档 Javadoc GitHub上的JArgs purcell / jargs 翻译自: https://www.javacodegeeks.com/2017/08/java-command-line-interfaces-part-13-jargs.htmljava登录界面命令