使用 Apache Commons CLI 检测命令行参数/选项的缺失

Iof*_*ure 5 java apache-commons-cli

我目前正在使用该库Apache Commons CLI 1.3.1来解析命令行参数并控制可执行 jar 中的执行流程。到目前为止,一切都非常简单,文档示例使用页面也相对全面且有用。

但是,我仍然不清楚如何使用这个库来检测是否存在任何参数或选项。我想检测这种情况,然后打印使用/帮助声明。我通过简单地检查参数数组的长度来解决这个问题,但我想知道库是否有一种方法可以在不检查每个选项是否存在的情况下检测这种情况。

这是我的代码,其中包含解决方法:

public static void main(String[] args)
{
    try
    {
       // create Options object
       Options options = new Options();

       // add t option
       options.addOption("t", false, "display current time");
       options.addOption("help", false, "print this message");

       CommandLineParser parser = new DefaultParser();
       CommandLine cmd = parser.parse(options, args);

       if(cmd.hasOption("t")) {
           log.debug("Received option t");
           // Do something
       }

       if (args.length <= 0 || cmd.hasOption("help"))
       {
           // automatically generate the help statement
           HelpFormatter formatter = new HelpFormatter();
           formatter.printHelp( "java -jar Client.jar <option> <arguments>", options);
       }
    }
    catch (Exception ex)
    {
        ex.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

Sto*_*ica 3

我认为您正在寻找getArgListgetArgs方法。从文档中:

检索任何剩余的无法识别的选项和参数

所以代替这个:

   if (args.length <= 0 || cmd.hasOption("help"))
Run Code Online (Sandbox Code Playgroud)

像这样使用:

   if (cmd.getArgs().length == 0 || cmd.hasOption("help"))
Run Code Online (Sandbox Code Playgroud)