我没有看到检查是否所有选项都在 apache 的 CLI 库的 String[] 输入中提供的标准方法。也就是说 - 我的选项都在命令行中被 REUIRED,否则,我想抛出一个异常。
我尝试以下作为解决方法,但在 if 语句中出现 Nullpointer 异常...
PosixParser p = new PosixParser();
CommandLine cli=p.parse(options,args);
for(Object o : options.getOptions())
{
Option op = (Option)o;
if(cli.getOptionValue(op.getName()))
throw new ParseException("Missing argument ! " + op.getArgName() + ":"+op.getDescription());
}
对此进行更新: getOpt() 方法似乎提供了参数短名称。
但是,如果我将 op.getName() 替换为 opt.getLongName()... 它可以工作!
无论如何..我有两个问题:
1)为什么一个选项会有一个空名称,但一个非空 longName ?
2)有没有办法简单地确保提供所有选项 String[] ?例如,我想打电话:
if(! options.isAllProvided())
throw new ParseException("You are missing some options ! " + StringUtils.join(userInputArray,','));