问题标签 [apache-commons-cli]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
10566 浏览

java - Apache CLI:必需选项与帮助选项相矛盾。

如果我根据需要定义了 2 个选项,例如:

和一个帮助选项

和解析器

当用户输入例如 myApp -h .. 在解析步骤中引发异常时,缺少必需的选项,而我想打印帮助数据。

如何在保持这些选项按要求声明的同时允许调用帮助?

0 投票
1 回答
2093 浏览

java - 使用 Apache 公共库的 Java 命令行参数解析问题

我正在使用 Apache commons basic/gnu 解析器来解析命令行选项,如下所示。

我正在使用下面提到的参数列表调用程序。

我得到的只是第一个 IP 地址,我怎样才能获得所有三个带有端口的 IP 地址作为参数传递给 --iplist 变量?

这是我正在使用的选项。

0 投票
1 回答
1547 浏览

java - 如何在 Commons cli 中获取没有选项名称的控制台应用程序参数?

这是我的控制台输入:

java TCPPing –p –port 9900 –mps 30 –size 1000 pcB

pcB 是没有名称的选项的参数。

我如何获得没有选项的 pcB 参数?

小代码部分:

0 投票
1 回答
2966 浏览

java - Apache Commons CLI:如何防止对选项使用短名称?

在 Apache Commons CLI 库中,是否可以绕过短名称的使用,从而强制用户使用长名称?

通常,选项定义如下:

我想禁止使用“u”。但是如果我用或空字符串替换它null,就会有例外......

为什么有这个要求?我希望我的所有选项都只采用 --optionName=optionValue 的形式,因为我的应用程序的某些部分是 Spring Boot 并且 Spring Boot 默认识别这种格式的选项。

此外,为了开发人员和用户之间的一致性以及简化文档,我发现如果我们有一种独特的方式来使用选项而不是 2 会更好。

0 投票
3 回答
5349 浏览

java - Hadoop NoSuchMethodError apache.commons.cli

我正在使用hadoop-2.7.2并且我用 IntelliJ 做了一个 MapReduceJob。在我的工作中,我正在使用apache.commons.cli-1.3.1并将 lib 放入 jar 中。

当我在我的 Hadoop 集群上使用 MapReduceJob 时,我有一个NoSuchMethodError

线程“主”java.lang.NoSuchMethodError 中的异常:org.apache.commons.cli.Option.builder(Ljava/lang/String;)Lorg/apache/commons/cli/Option$Builder;

我不明白,因为该方法存在于类中Option,并且该类Option是从commons-cli.jar我的应用程序 jar 中提取的。此外,我的其他图书馆没有这个问题。

感谢您的时间。

0 投票
1 回答
3130 浏览

java - Apache commons CLI - 重复选项

我环顾四周,这可能只是术语不正确的情况,但是 Apache commons CLI 是否可以处理重复的选项?例如:

program --arg value1 --arg value2 ...

我知道你可以指定多个选项参数,所以它会接受像......

program --arg value1 value2

...但我想处理任意数量的重复选项。有谁知道这是否/如何可能?

我发现这个问题有点相似,但从未得到回答。

0 投票
2 回答
1313 浏览

java - DefaultParser in Commons CLI doesn't behave like the deprecated parsers

Problem

I'm trying to parse some command line arguments in any order. Two of them are single-value and mandatory and the other one is an optional comma-separated list:

Using any of the old parsers (BasicParser, PosixParser and GnuParser) the code works fine but if I use DefaultParser instead, a MissingOptionException is thrown.

Code

Command line arguments

-sm1 Alice -sm2 Bob -mo Charles,David works

-sm1 Alice -mo Charles,David -sm2 Bob works only using the old (and now deprecated) parsers

Am I missing something? I'm using commons-cli-1.4-SNAPSHOT.

Thanks for any help.

0 投票
3 回答
2229 浏览

java - 为什么无法识别选项时默认解析器(使用 commons-cli)不抛出异常?

当指定为程序参数的选项无效(在预定义的选项列表中不可用)时,我想要打印使用帮助消息。

我键入作为参数“测试”字符串。我在想,无效的选项会导致解析器抛出 ParseException,但事实并非如此。我怎样才能实现这种行为?这个图书馆有可能吗?现在它只是省略了无效的参数。

UPDATE Actually it throws exception when option has a '-' prefix. 所以'-Test'会导致抛出异常,但'Test'不会。无论如何我的问题仍然有效,如何强制解析器在无效参数上抛出异常

0 投票
0 回答
175 浏览

java - 获取包含“\n”(换行符)的命令行选项值,apache commons cli

我使用 apache-commons-cli:

从命令行获取选项值:

,它得到一个带有值的转义主题

但是对于我的特殊情况,我真的需要一个没有转义的字符串 "abcd\n" 。

如何从命令行传递正确的值?

0 投票
1 回答
328 浏览

java - 将 Base64 字符串作为选项传递给 Apache Commons-CLI 解析器

我构建了一个 Java webstart 应用程序,它需要接收 Base64 参数作为命令行参数。

我正在使用 Apache Common-CLI 从 JNLP 内部解析参数。只有两个参数,其中一个是 JSON,在这个 JSON 里面有一个 Base64 字符串。

问题是 Base64 字符串在末尾用“=”(等号/等号)填充,并且解析器无法将字符串识别为参数的一部分,而是尝试将“=”评估为键=value 参数的分隔符,它引发以下异常: org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option

有没有办法逃避这个字符,或者让解析器忽略它?

CLI 选项是使用以下代码构建的:

它是从 JNLP 调用的:

当我将两个哈希上的 '=' 更改为 'a' 时,解析器按预期工作(但该选项现在当然具有无效的 Base64)。