Fin*_*ent 7 java apache-commons-cli
我正在尝试将Java中的命令行参数解析为以下用法:
Usage: gibl FILE
-h, --help Displays this help message.
-v, --version Displays the program version.
FILE Source file.
Run Code Online (Sandbox Code Playgroud)
使用Apache Commons CLI库,我知道我可以选择使用Option来解析-h和-v命令,然后使用CommandLine.getArgs()来获取剩余的参数FILE,然后根据需要进行解析,但实际上我想将其指定为OptionCLI中的一个。
目前,我执行以下操作:
if (cmd.getArgs().length < 1) {
System.out.println("Missing argument: FILE");
help(1); // Prints the help file and closes the program with an exit code of 1.
}
String file = cmd.getArgs()[0];
Run Code Online (Sandbox Code Playgroud)
但是,当我调用HelpFormatter.printHelp(String, Options)我的额外参数时,它不会包含在自动生成的帮助文本中。
我所追求的是这样的:
Option file = new Option("Source file.");
file.setRequired(true);
options.addOption(file);
Run Code Online (Sandbox Code Playgroud)
我有一个参数,但没有附加相应的选项标识符的地方,因此可以将其传递给HelpFormatter。有任何想法吗?
您可以通过以下方式访问命令行参数而无需关联的标志:
org.apache.commons.cli.CommandLine#getArgList()
它返回所有未使用/已解析参数的列表。
因此,您可以通过以下方式获取定义的选项:
org.apache.commons.cli.CommandLine#getOptionValue("option-name")org.apache.commons.cli.CommandLine#hasOption("option-name")或通过上述方法获取所有未解析/无法识别的选项的列表:
org.apache.commons.cli.CommandLine#getArgList()
据我所知,Commons CLI 不支持定义没有关联标志的选项。我认为您需要按照以下方式做一些事情:
new HelpFormatter().printHelp("commandName [OPTIONS] <FILE>", Options);
Run Code Online (Sandbox Code Playgroud)
如果您没有看到,这个问题非常相似,我的答案与那里的答案非常相似。
| 归档时间: |
|
| 查看次数: |
3293 次 |
| 最近记录: |