问题标签 [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 - Commons CLI 不支持我的命令行设置
在此处使用Apache Commons CLI 1.2。我有一个需要 2 个运行时选项的可执行 JAR,fizz
并且buzz
;两者都是需要参数/值的字符串。我希望(如果可能的话)我的应用程序像这样执行:
java -jar myapp.jar -fizz "好吧,那么!" -buzz “现在保重,那么再见!”
在这种情况下,fizz
选项的值将是“ Alrighty,then! ”等。
这是我的代码:
当我运行它时,我得到以下输出:
嘶嘶声是:空
我需要对我的代码做些什么,以便我的应用程序可以按我想要的方式调用?或者我最接近它的地方是什么?
加分:OptionBuilder
如果有人可以向我解释'swithArgName(...)
和参数之间的区别withLongOpt(...)
,create(...)
因为我为它们传递了相同的值,如下所示:
java - Java:Apache commons-cli 如何处理相互依赖的选项
我对 Apache commons-cli v1.3 有点苦恼,但我还没有找到解决以下问题的实用解决方案:
我有一个命令行工具 - 根据指定的参数 - 创建一个字符串(或从本地文件中读取它),可能对其进行内联编辑,并可选择显示、将所述字符串写入本地文件或通过 HTTP 请求发送它到服务器。
所以我有选项“c”代表“create”,“r”代表“read”,“e”代表“edit”(通过 cli),“d”代表显示,“w”代表“write”,以及“ p”代表“推送到服务器”
显然,一些组合是可能的。例如,应该可以创建此字符串并推送它,而无需从文件读取或写入它。此外,应该可以在不推送的情况下创建和编写,等等......
所以参数的语义是:
显然,当 String 被“c”读取时,它一定不能被“r”读取。当“c”reating 时,我会使用来自 cli-parser 的交互式输入。当“r”阅读时,我想允许用户通过 cli 的交互式输入“e”dit。其余参数是可选的。
下一个:“r”阅读时,需要指定文件名/路径。此外,在“写作”时,这是必要的。无论如何,应该可以指定要读取的文件和要写入的第二个文件。所以文件名会有两个参数,它们都是可选的。
生成的语法如下所示:
等等。
我在这里有点迷路了。如何将 commons-cli 配置为具有两个文件名参数,根据指定的参数(选项)需要这些参数?这甚至可能吗?
shell - apache commons-cli 如何解析 \\t 字符
我需要在 commons-cli 中将 tab 作为参数传递。当我将参数设为“\\t”时,命令行解析器会将其解析为“\t”字符本身,而不是 TAB ( ) 空格。我怎样才能做到这一点?
编辑 :
正如@centic 所建议的,用我如何调用应用程序来更新问题。我在 Unix 中使用命令行调用,其中反斜杠被检测为转义字符。
更准确地说,我在提交 hadoop 流作业时使用它,如果这有帮助的话。例如:
hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.4.0.jar -D stream.map.output.field.separator="\t" -file mapper.py -mapper mapper.py -file reducer.py -reducer reducer.py -input /in -output /out
Apache Hadoop 使用 Apache Commons-cli 作为命令行实用程序。所以我假设“\\t”解析为“\t”并作为选项传递。但是当我通过调试 hadoop 源代码打印它时,它不是 TAB 空格字符,而是打印为“\t”(字符串文字)本身。
java - Apache commons CLI 的条件命令行选项
我目前正在使用 Apache 的通用 CLI 库来解析命令行选项,我想知道是否有一种简单的方法来满足条件要求。
例如,在下面的示例中,我有两个必需选项-a
和-b
一个 optional -h
,它应该显示一些描述。解析器现在的工作方式是,只要缺少一个必需的选项,它就会抛出 ParserException。到目前为止,一切都很好。我的问题是是否有办法在-h
指定时不寻找所需的选项。由于这很常见,-h
应该只打印帮助而不实际启动我的应用程序,我想跳过检查其他命令行选项。
java - 如何从 UNIX 执行实现 Apache CLI 的 JAR
我使用 Apache CLI 库创建了一个可执行的 jar 文件。我在eclipse中开发了这个程序,它运行得很好。但是,我需要在 UNIX (solaris) 环境中执行此操作,但似乎没有任何效果。这是我使用的命令
$cPath 有我需要的所有 jar 的路径。
当我尝试执行此操作时,我收到一条错误消息,指出它找不到 Apache CLI 的 JAR。所以,这是我的问题
在尝试在 UNIX 中实现 CLI 时,我有正确的语法吗?
我是否正确设置了所需 JAR 的路径?
请指教。
编辑
好的,这就是我尝试过的。我为我的 jar 执行了主类
这行得通!但是,当我将所有文件 jar 并尝试执行时
这会引发异常
所以基本上,它找不到我猜的cli jar。我还尝试在我创建的 jar 文件中包含我需要的所有库,但我仍然得到同样的错误。
请指教。
编辑 2
另一个更新。
这行得通
但我不想提供主类的名称。我已经在清单文件中定义了它。
请指教。
java - ClassNotFoundException:org.apache.commons.cli.ParseException 与 maven
我正在尝试从 linux 的命令行运行一个 java 项目:
$ java -jar 目标/my-app.jar -csv test.csv
并得到了这个错误
我正在使用 maven-3,这里是我的构建 maven 配置:
还有我的 commons-cli 依赖声明
如果我将代码和依赖项删除到我的类中,我不会再收到错误。
谢谢 !
java - java.lang.IllegalAccessError 在调用 CommandLineParser#parser 时使用 org.apache.commons.cli
我正在尝试使用 Apache Commons CLI 库来解析 Eclipse 项目中的命令行选项,大致遵循其使用场景中的示例
我将该commons-cli-1.3.1
文件夹添加到lib
Eclipse 项目根目录中的文件夹中。
我将此添加到我的导入中:
这是我最重要的main
:
它编译没有错误,但是当它运行parser.parse
调用时会产生这个错误:
此时我没有使用任何类加载器。
这个错误是什么意思?如何解决错误并解析参数?
java - Java Apache CLI 可选命令行参数不起作用
尝试Apache Commons Command Line Interface 1.3.1
从这里使用 它对于必需的参数效果很好,但似乎删除了任何可选参数。谁能发现我下面的代码有问题?
上述代码的输出是:
为什么“mysecondarg”没有被捕获?如果我将 .optionalArg(true) 行更改为 .hasArg(true),则会捕获第二个参数,但整个想法是能够有选择地忽略第二个参数。
java - 命令行中的 Commons CLI 空选项
我不明白如何在 Commons CLI 中Options
申请DefaultParser
。
创建CommandLine
对象时,assignedOptions
始终为空。
下面的代码块是我解释 Commons CLI 文档的方式:
为什么它line.getOptions()
是空的,以及如何正确应用选项?
java - Java Apache Commons CLI 找不到 setArgs()
我正在尝试将多个参数传递给 java 程序。Apache Commons CLI 界面已正确设置并且可以正常工作。但是,当我尝试使用
setArgs(Option.UNLIMITED_VALUES)
,它给了我一个错误
The method setArgs(int) is undefined for the type Options.
我的代码如下所示: