我正在尝试使用Apache Commons CLI来解析我正在编写的CLI应用程序的命令行参数。我创建了两个选项a
和b
,并将它们添加到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
的字符串参数。我有什么办法可以做到这一点?
如果这个问题的任何部分不清楚,请告诉我。谢谢!