Apache Commons CLI :获取选项的值列表

对于 CLI,我需要传入一个整数数组作为特定选项的输入。

示例 - 以下命令将接收一组 customerId 并执行一些操作。

myCommand -c 123 124 125

我已经使用Apache commons CLI实现了CLI,并且我正在使用getOptionValues(“c”)来检索这个数组。

问题是,它只返回数组中的第一个元素,即[123],而我希望它返回[123,124,125]。

我的代码的压缩版本,

CommandLine cmd;
CommandLineParser parser = new BasicParser();
cmd = parser.parse(options, args);
if (cmd.hasOption("c")){
String[] customerIdArray = cmd.getOptionValues("c");
// Code to parse data into int
}

有人可以帮我确定这里的问题吗?


答案 1

我想在这里添加这个作为@Zangdak的答案,并添加我对同一问题的发现。

如果不调用,则将发生运行时异常。当您知道此选项的确切最大参数量时,请设置此特定值。当此值未知时,类 Option 具有一个常量:#setArgs(int)Option.UNLIMITED_VALUES

这将改变gerrytans对以下内容的回答:

Options options = new Options();
Option option = new Option("c", "c desc");
// Set option c to take 1 to oo arguments
option.setArgs(Option.UNLIMITED_VALUES);
options.addOption(option);

答案 2

您必须设置该选项可以采用的参数值的最大值,否则它将假定该选项只有1个参数值

Options options = new Options();
Option option = new Option("c", "c desc");
// Set option c to take maximum of 10 arguments
option.setArgs(10);
options.addOption(option);