java - Apache Commons CLI : Getting list of values for an option

标签 java command-line-interface apache-commons

对于 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/

相关文章:

java - 是否有任何泛型版本的 apache 公共(public)对象池?

java - 从多个 map 获取重复 map 键的列表

linux - 从 CLI 运行 matlab 函数

python - urwid 中是否有相当于 GUI 文本字段的内容?

java - StringEscapeUtils escapeJava 正在转义井号

Java BeanUtilsBean : Convert Date to String

java - 绕过 Spring Security @preauthorize

java - 为什么 Quartz 调度程序的 unscheduleJob 会同时删除触发器和作业详细信息?

Java 作用域错误

heroku - 如何在树莓派 3 上安装 Heroku CLI