问题标签 [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 投票
2 回答
1776 浏览

java - 使用 Apache Commons CLI 检测命令行参数/选项的缺失

我目前正在使用该库Apache Commons CLI 1.3.1来解析命令行参数并控制可执行 jar 中的执行流程。到目前为止,一切都非常简单,文档示例使用页面相对全面且有用。

但是,我仍然不清楚如何使用这个库来检测是否缺少任何参数或选项。我想检测这种情况,然后打印一个使用/帮助语句。我通过简单地检查参数数组的长度来解决这个问题,但我想知道库是否有一种方法来检测这种情况而不检查每个选项的存在。

这是我的代码,其中留下了解决方法:

0 投票
1 回答
1841 浏览

java - Commons CLI getValue() 和 getOptionValue()

我对这两种方法有点困惑。当我使用时,getOptionValue(optionName)我确实得到了我在命令行中输入的参数,但是当我使用时我得到了 nulloptionName.getValue()

获取值()

返回此 Option 的指定值,如果没有值,则返回 null。

获取选项值(字符串)

检索此选项的第一个参数(如果有)。

正如您所看到getOptionValue(String)的,明确表示参数,而另一个只表示值,但它们的方法名称中都有“值”。由于没有setValue(String)方法或类似的东西,我只是假设它与参数相同。

输出是:

1

[参数]

无效的

0 投票
0 回答
278 浏览

apache-commons-cli - Apache Commons CLI 在 autoUsage 中命名位置参数

可以在 Apache Commons CLI 中检索位置参数。是否可以为使用说明命名它们?具体来说,Apache Commons CLI 文档提供了一个 ls 示例

调用时如何使用 HelpFormatter 输出“[FILE] ...” HelpFormatter.printHelp(..., autoUsage = true)?这些是返回的值CommandLine.getArgs()。我知道如何Option在使用消息中命名参数,但不知道如何命名此类位置参数。

0 投票
1 回答
717 浏览

java - 命令行参数不按顺序

我正在使用 Common-CLI api 来显示命令的帮助。以下函数显示命令的帮助。

我按以下顺序添加了选项。

当我在选项对象上调用 printHelp 函数时,我得到以下输出。

但我期待以下方式。

谁能告诉我,我怎样才能得到预期的输出?

0 投票
1 回答
197 浏览

java - Commons CLI:识别文件名 *.deca

我正在尝试使用 Apache Commons CLI 来识别我的 java 程序的参数。因此,有很多选项(例如“-p”作为示例),但大多数情况下,文件的名称应该用作 java 程序的输入。请注意,所有选项都没有顺序限制。

程序启动示例:

decac -p -r 5 test.deca

我在解析 -p 和 -r (带有参数“5”)选项时没有问题,但是我如何为“test.deca”创建一个选项,知道它可以是任何东西。它也可能类似于 pathTo/anotherTest.deca

0 投票
1 回答
510 浏览

java - 我可以区分 org.apache.commons.cli 中的短选项和长选项吗

假设我有一个使用 org.apache.commons.cli 包来获取命令行选项的工具。我定义了一个选项

因此用户可以使用 -v 或 --version 命令行选项调用我的工具。

问题是,我能否在我的代码中判断用户输入的是 -v 还是 --version?

我的想法是将命令行选项的长版本与详细输出相关联,将短版本与非详细输出相关联。因此,如果用户通过 -v,他/她将获得该工具的版本号,但如果用户输入--version,他/她将获得该工具的版本、依赖项的版本、其他一些版本控制和供应商信息,等等

两个问题:

  1. 可以用 org.apache.commons.cli 有效地完成吗?
  2. 从用户的角度来看,这是一个好主意吗?这是一种常见的做法还是我在这里发明了一些深奥的东西?

对这种方法的实施和理念的经验丰富的想法值得赞赏。

提前致谢

0 投票
1 回答
591 浏览

java - 在 Apache commons CLI 中有条件地要求一个选项

是否有可能在 Apache commons CLI 中有条件地要求选项?例如,我有两个选项-c 和-d。选项 -c 只能从预定义列表中获取一个值(“值一”、“值二”)。有没有办法使选项 -d 仅在 -c 参数设置为“值一”时才需要,但如果 -c 设置为“值二”则保持可选?

0 投票
2 回答
2281 浏览

java - CLI:getOptionValue 始终返回“null”

您好,对于我的课程,我必须学习使用 CLI,现在看起来还可以。我的问题是:变量 'in' 在使用 cl.getOptionValue("I") 后总是返回 null 。有人可以帮忙吗?

0 投票
1 回答
504 浏览

java - Apache Commons CLI:获取选项的字符串值数组

Commons CLI 1.4 出现问题我需要解析无限值字符串选项,例如 exmpl :

-fe .magnet .torrent (参数值以点开头)

Option我通过创建这个Option.builder()

接下来我将它添加到我的Options对象中

然后我解析这个,我得到一个异常

org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option: -fe

如何以正确的方式解析两个或多个此参数,通过空格符号分隔?

0 投票
1 回答
764 浏览

java - 我如何从 commons cli 中“获取”帮助字符串而不是“打印”

我知道,下面的代码将生成帮助文本并将其打印到控制台

但我如何将帮助文本作为String对象。我期待类似的东西

CLIAPI中是否隐藏了任何方法?或者有什么方法可以获取帮助文本而不是将其打印到控制台。