Apache Commons CLI:选项的arg被视为选项

时间:2018-07-24 02:52:16

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

我正在尝试使用Apache Commons CLI来解析我正在编写的CLI应用程序的命令行参数。我创建了两个选项ab,并将它们添加到Options对象中:

Option option_a = Option.builder("a")
        .hasArg(false)
        .build();
Option option_b = Option.builder("b")
        .hasArg(true)
        .build();

Options options = new Options();
options.addOption(option_a);
options.addOption(option_b);

a 接受参数,因此它是一个布尔值标志。 b 确实接受参数,因此是一种选择。

    String args[] = {"-b", "-a"}
    CommandLineParser parser = new DefaultParser();
    CommandLine cmd = parser.parse(OPTIONS, args);

当我创建一个DefaultParser并尝试使用命令行参数args解析以上选项时,我收到一条org.apache.commons.cli.MissingArgumentException和消息Missing argument for option:b。虽然我打算将第二个参数“ -a”用作-b的参数,但看起来“ -a”被视为选项-a(这很有意义,但是不是我想要的)。我需要将其视为选项-b的字符串参数。我有什么办法可以做到这一点?

如果这个问题的任何部分不清楚,请告诉我。谢谢!

0 个答案:

没有答案