gpt4 book ai didi

java - Apache Commons CLI 1.3.1 : How to ignore unknown Arguments?

转载 作者:搜寻专家 更新时间:2023-10-30 21:35:14 30 4
gpt4 key购买 nike

我曾经使用 Apache Commons Cli 1.2。我希望解析器忽略未知参数(未添加到选项对象)。

示例(伪代码):

Options specialOptions;
specialOptions.addOption(null, "help", false, "shows help");
specialOptions.addOption(null, "version", false, "show version");

CommandLineParser parser = new DefaultParser();
CommandLine cmd = parser.parse(options, args); //no third argument, since i dont want the program to stop parsing.
// run program with args: --help --unknown --version
// program shall parse --help AND --version, but ignore --unknown

我使用了 Pascal Schäfer 的解决方案: Can Apache Commons CLI options parser ignore unknown command-line options?

这对我来说在 1.2 上运行良好,在 1.3.1 上也运行良好。但它已被弃用。我使用的解析器已被 DefaultParser 取代。我查找了功能,但没有这样的方法processOptions

我真的很想使用在以后的版本中不会被删除的代码。有谁知道如何解决这个问题?

最佳答案

感谢@kjp 的建议;但解决方案不适用于具有值的参数。

我尝试改进 kjp 的解决方案:

public class RelaxedParser extends DefaultParser {

@Override
public CommandLine parse(final Options options, final String[] arguments) throws ParseException {
final List<String> knownArgs = new ArrayList<>();
for (int i = 0; i < arguments.length; i++) {
if (options.hasOption(arguments[i])) {
knownArgs.add(arguments[i]);
if (i + 1 < arguments.length && options.getOption(arguments[i]).hasArg()) {
knownArgs.add(arguments[i + 1]);
}
}
}
return super.parse(options, knownArgs.toArray(new String[0]));
}

关于java - Apache Commons CLI 1.3.1 : How to ignore unknown Arguments?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33874902/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com