【问题标题】:Commons CLI empty Options in CommandLine命令行中的 Commons CLI 空选项
【发布时间】:2015-11-06 19:33:44
【问题描述】:

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

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

下面的代码块是我解释 Commons CLI 文档的方式:

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() 是空的,如何正确应用选项?

【问题讨论】:

  • 您传递给程序的命令行是什么?
  • -c。我基本上打开了 eclipse 的运行配置并将 -c 传递给参数列表。我仍然认为问题不存在,因为 line.getArgs() 不为空。
  • 乍一看,我看不出你所做的有什么问题。您使用的是哪个版本的 commons-cli?
  • @dosyfier 谢谢回复,版本是commons-cli-1.3.1

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


【解决方案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 中启动程序时,您使用的命令行中可能没有去除一些剩余的空格?否则,您的代码应该可以正常工作...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2023-03-22
    • 2016-12-18
    • 1970-01-01
    • 2014-09-08
    • 2011-03-19
    相关资源
    最近更新 更多