在CommandLine中Commons CLI为空选项

时间:2015-11-06 19:33:44

标签: java command-line apache-commons-cli

我不明白如何在Commons CLI中将Options应用于DefaultParser

创建CommandLine对象时,分配的Options始终为空。

Bellow代码块是我如何解释Commons CLI docs:

public static void main(String[] args)  {

    Options options = new Options();

    options.addOption("c", false, "why are you hidding from me");

    CommandLineParser parser = new  DefaultParser();

    System.out.println(args[0]); // this prints -c

    try {

        CommandLine line = parser.parse(options, args);

        System.out.println(line.getArgs()[0]); // prints -c

        Option[] o = line.getOptions(); // this is empty for some reason

        System.out.println(o.length); // prints 0

        if (line.hasOption("c")) { // false

            System.out.println(" flag c found");
        }
    }

    catch(ParseException e ) {
        e.printStackTrace();
    }

为什么line.getOptions()为空,以及如何正确应用这些选项?

1 个答案:

答案 0 :(得分:1)

我只是想重现你的问题,但一切都对我好。 我创建了一个简单的maven项目,其中只包含commons-cli:commons-cli:1.3.1依赖项和Test主类,其方法与您在问题中提供的方法完全相同。

当我从Windows命令行编译并运行main方法时,例如用:

java -cp .;[path_to_commons_cli_jar]/commons-cli-1.3.1.jar Test -c
然后它给了我预期的输出:

  • args由单个"-c"值组成;
  • line.getArgs()返回一个空数组;
  • line.getOptions()返回由预期的Option对象组成的单个条目数组。

在eclipse中启动程序时,可能会在命令行中删除一些剩余的空格?否则,您的代码应该可以正常工作......