问题标签 [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 Commons CLI 1.3.1:如何忽略未知参数?
我曾经使用 Apache Commons Cli 1.2。如果参数未知(未添加到选项对象),我希望解析器忽略它们。
示例(伪代码):
我使用了 Pascal Schäfer 的解决方案: Apache Commons CLI 选项解析器可以忽略未知的命令行选项吗?
这对我来说在 1.2 上很好用,在 1.3.1 上也很好用。但它已被弃用。我使用的解析器被替换为DefaultParser
. 我查了功能,但没有这样的方法processOptions
。
我真的很想使用不会在以后的版本中删除的代码。有谁知道如何解决这个问题?
java - Apache CLI、可执行 jar、classLoader().getResource()
我的目标是使用带有可执行 jar 文件的 Apache CLI 来读取文本文件,执行字符串操作,然后写入 CSV。您将在终端中执行该工具,如下所示:
我已经为此功能编写了测试,并且这些测试正在通过。测试输入文本文件位于src/test/resources/
. 以下测试通过:
我们使用依赖项编译我的 jar 文件,mvn clean compile assembly:single
然后引发以下 FileNotFoundException:
这使我相信在哪里ParseDoc.class.getClassLoader().getResource(fileName);
查找文件存在问题。我知道已提出的相关问题。相关问题如下:
- 可执行 jar 中 Class.getResource() 和 ClassLoader.getResource() 的奇怪行为
- Class.getResource() 和 ClassLoader.getResource() 有什么区别?
- MyClass.class.getClassLoader().getResource(“”).getPath() 抛出 NullPointerException
- this.getClass().getClassLoader().getResource(“…”) 和 NullPointerException
- getResourceAsStream 返回 null
这些问题似乎都没有询问如何在 Apache CLI 中使用可执行 jar。我认为基本问题是我的命令行参数给出的文件路径不能被URL resourceURL = ParseDoc.class.getClassLoader().getResource(fileName);
.
请让我知道你在想什么。感谢您的时间。
java - 为什么在使用 DefaultParser 而不是 GnuParser 时检测到的 CLI 选项不同?
我即将迁移一些遗留代码以包含来自3rd方库的较少弃用的警告。对于 Apachecommons-cli
库(版本:1.3.1),我在官方 JavaDoc中检测到GnuParser
已弃用,DefaultParser
应改为使用:
@deprecated 自 1.3 起,请
{@link DefaultParser}
改用
但是,以下代码片段按预期停止工作:
请注意,setValueSeparator(',')
此处用于定义自定义分隔符,
,以使 CLI 支持多种gst类型(请参阅代码片段)。
作为输入,以下程序参数用于调用 CLI:
java -jar MyCLI.jar -gst category -gsd 4
显然,在 gsd 参数之后可能还添加了其他几个参数。使用“gst”参数的无分隔符的预期和正确解析的选项是(通过GnuParser
):
- “类别”(仅此而已)
但是,当我更改代码并通过以下方式切换到推荐的解析器时:
结果,解析的值被错误地检测为:
- “类别”
- “-gsd”
- “4”
提示:我使用调试器通过检查返回变量values
中的字段来验证解析过程的错误结果。org.apache.commons.cli.Option
commands
我的期望是解析器的内部更改不应产生不同的结果,因为这会破坏现有代码。DefaultParser
在切换到多个选项值和自定义分隔符时,是否有人遇到过与 Apache Commons-CLI 相同的行为?
DefaultParser
我可能监督的构造/使用有什么不同吗?
java - Apache Commons CLI 1.3.1:在具有多个参数的另一个选项之后的选项被用作 ARGUMENT
我正在使用 Apache Commons CLI 1.3.1 来处理一些选项,其中一些选项可以采用一个到无限数量的参数。一个有两个选项的琐事示例是这样的
我发现第二个选项optionY
总是被识别为ARGUMENT的optionX
而不是被识别为OPTION本身。这意味着如果您在命令行中键入
,您myProgram -optionX arg1 arg2 -optionY
将获得三个与.arg1
arg2
-optionY
optionX
这是任何人都可以用来重现问题的代码。
这是您将看到的输出。
我在这里想念什么吗?
任何建议将不胜感激。
java - Apache Commons CLI: replacement for deprecated OptionBuilder?
IntelliJ shows that OptionBuilder is deprecated in this example code from http://commons.apache.org/proper/commons-cli/usage.html.
What should I use as the replacement?
java - 我可以在 apache commons cli 中创建带有连字符的选项名称吗?
我正在尝试使用 Apache Commons CLI java 库在其中设置带有连字符的选项名称,例如“源文件”。
我得到这个错误,
这意味着我不能使用带有连字符的选项名称,这是 unix 命令的标准。我注意到Commons CLI文档在他们的示例中提到了一个带连字符的选项名称。我在这里错过了什么吗?
apache-commons-cli - 如何在 Apache common cli 中获取选项的类型值列表
我正在尝试从选项中获得 Long[] 。这是我的选项定义:
它可以采用逗号分隔的用户列表。如果我使用 getParsedOptionValue,它只返回第一个选项值。如果我使用 getOptionValues,它会返回一个 String[]。有没有办法让 Long[] 回来?
apache-commons-cli - 使用 apache commons cli 定义位置参数
我想定义一个包含命名参数和位置参数的 Apache Commons CLI 解析器。
如何验证 pos1 和 pos2?
java - 使用 apache-commons-cli 排除 HelpFormatter.printHelp() 中的几个选项
我正在使用 apache-commons-cli 来解析我的 java 程序中的命令行参数。
现在,我正在尝试找到一种方法来排除使用帮助中显示一些敏感或调试选项的方法。顺便说一句,我正在使用帮助。HelpFormatter
这是打印所有选项。但我不希望打印第三个选项。
实际输出:
预期输出:
这样,调试参数将只有实际需要了解它以进行调试的人知道。
有没有办法单独从帮助输出中禁用特定选项。但仍然像其他选项一样解析它?
顺便说一句,我正在使用commons-cli-1.3.1.jar
。
java - 带有自己提示符的 Java 命令行应用程序
我正在编写一个 JAVA 控制台应用程序。用户启动 jar 后,他应该得到一个类似于 Linux shell 的命令行,他可以在其中输入命令。这是我以前从未编程过的东西。通常我正在编写 GUI,或者我用一些已解析的参数启动 jar。
基本上我有2个问题:
- 是否有第三方库可以帮助从命令行读取用户输入并解析命令并生成提示?解析在我通常由 Apache Commons CLI 使用的主类中传递的参数。它在这里也使用完整还是有更好的方法?
是否有提供“无限输入”的最佳实践?我发现的所有解决方案都有 10 年或更长时间,例如:
这仍然是最佳做法还是今天有更好的方法?