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 - 如何用java制作 View 之间的导航系统

java - 如何使用 Apache Commons 解压缩 BZIP(不是 BZIP2)

java - 如何按属性查找集合中的元素?

Java字符串转JS

java - 如何在不使用图像加载库的情况下修复 OutOfMemoryError

java - 集群 Apache Tomcat6

macos - 在 Mac 上通过命令行创建 ODBC 连接

mysql - 使用命令行截断 MySQL 数据库中的特定表

java - 超过 FileSizeMax 时取消文件上传

java - 多线程 Java 应用程序中的 SQLite