对于 CLI,我需要传入一个整数数组作为特定选项的输入。
示例 - 下面的命令将接收一个 customerIds 数组并执行一些操作。
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
}
有人可以帮我找出这里的问题吗?
最佳答案
我想在这里添加这个作为对@Zangdak 的回答,并添加我对同一问题的发现。
如果您不调用 #setArgs(int)
,则会发生 RuntimeException。当您知道此选项的确切最大参数数量时,请设置此特定值。当此值未知时,Option 类有一个常量: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);
关于java - Apache Commons CLI : Getting list of values for an option,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17180743/