问题标签 [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.
java - Apache CLI:必需选项与帮助选项相矛盾。
如果我根据需要定义了 2 个选项,例如:
和一个帮助选项
和解析器
当用户输入例如 myApp -h .. 在解析步骤中引发异常时,缺少必需的选项,而我想打印帮助数据。
如何在保持这些选项按要求声明的同时允许调用帮助?
java - 使用 Apache 公共库的 Java 命令行参数解析问题
我正在使用 Apache commons basic/gnu 解析器来解析命令行选项,如下所示。
我正在使用下面提到的参数列表调用程序。
我得到的只是第一个 IP 地址,我怎样才能获得所有三个带有端口的 IP 地址作为参数传递给 --iplist 变量?
这是我正在使用的选项。
java - 如何在 Commons cli 中获取没有选项名称的控制台应用程序参数?
这是我的控制台输入:
java TCPPing –p –port 9900 –mps 30 –size 1000 pcB
pcB 是没有名称的选项的参数。
我如何获得没有选项的 pcB 参数?
小代码部分:
java - Apache Commons CLI:如何防止对选项使用短名称?
在 Apache Commons CLI 库中,是否可以绕过短名称的使用,从而强制用户使用长名称?
通常,选项定义如下:
我想禁止使用“u”。但是如果我用或空字符串替换它null
,就会有例外......
为什么有这个要求?我希望我的所有选项都只采用 --optionName=optionValue 的形式,因为我的应用程序的某些部分是 Spring Boot 并且 Spring Boot 默认识别这种格式的选项。
此外,为了开发人员和用户之间的一致性以及简化文档,我发现如果我们有一种独特的方式来使用选项而不是 2 会更好。
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 中提取的。此外,我的其他图书馆没有这个问题。
感谢您的时间。
java - Apache commons CLI - 重复选项
我环顾四周,这可能只是术语不正确的情况,但是 Apache commons CLI 是否可以处理重复的选项?例如:
program --arg value1 --arg value2 ...
我知道你可以指定多个选项参数,所以它会接受像......
program --arg value1 value2
...但我想处理任意数量的重复选项。有谁知道这是否/如何可能?
我发现这个问题有点相似,但从未得到回答。
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.
java - 为什么无法识别选项时默认解析器(使用 commons-cli)不抛出异常?
当指定为程序参数的选项无效(在预定义的选项列表中不可用)时,我想要打印使用帮助消息。
我键入作为参数“测试”字符串。我在想,无效的选项会导致解析器抛出 ParseException,但事实并非如此。我怎样才能实现这种行为?这个图书馆有可能吗?现在它只是省略了无效的参数。
UPDATE Actually it throws exception when option has a '-' prefix. 所以'-Test'会导致抛出异常,但'Test'不会。无论如何我的问题仍然有效,如何强制解析器在无效参数上抛出异常
java - 获取包含“\n”(换行符)的命令行选项值,apache commons cli
我使用 apache-commons-cli:
从命令行获取选项值:
,它得到一个带有值的转义主题
但是对于我的特殊情况,我真的需要一个没有转义的字符串 "abcd\n" 。
如何从命令行传递正确的值?
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)。