Apache Commons CLI选项解析器可以忽略未知的命令行选项吗?

我正在编写一个使用命令行参数的Java应用程序,该参数是使用Apache Commons

CLI和GnuParser处理的。由于没有什么有趣的原因,我希望它默默地忽略未知的命令行选项,而不是抛出ParseException,但是我看不到这样做的方法。我看到GnuParser.parse()上有一个stopAtNonOption布尔选项,但我想要的更像是ignoreAtNonOption,它在遇到未知令牌后将继续处理选项。

我可以实现自己的解析器来完成此操作,但令我惊讶的是没有内置此功能,因此我认为我应该在走这条路之前进行检查。

我正在谈论的示例代码:

try {

CommandLine commandLine = parser.parse(options, args);

// stopAtNonOption set to true (below) is also not what I want

// CommandLine commandLine = parser.parse(options, args, true);

} catch (ParseException e) {

LOG.error("error parsing arguments", e);

throw new RuntimeException(e);

}

回答:

这对我有用(也可以派生其他解析器):

public class ExtendedGnuParser extends GnuParser {

private boolean ignoreUnrecognizedOption;

public ExtendedGnuParser(final boolean ignoreUnrecognizedOption) {

this.ignoreUnrecognizedOption = ignoreUnrecognizedOption;

}

@Override

protected void processOption(final String arg, final ListIterator iter) throws ParseException {

boolean hasOption = getOptions().hasOption(arg);

if (hasOption || !ignoreUnrecognizedOption) {

super.processOption(arg, iter);

}

}

}

以上是 Apache Commons CLI选项解析器可以忽略未知的命令行选项吗? 的全部内容, 来源链接: utcz.com/qa/399479.html

回到顶部