我没有看到一个标准的方法来检查是否提供了String[]输入中所有选项,以apache的CLI库为例。也就是说,我的选项在命令行都是必填的,否则,我希望抛出一个异常。
我正在尝试以下方法作为解决方法,但在if语句中得到一个空指针异常...
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)为什么一个选项会有空名称,但非空的长名称?
2)是否有一种简单的方法来确保所有选项都提供了String[]?例如,我想调用:
if(! options.isAllProvided())
throw new ParseException("You are missing some options ! " + StringUtils.join(userInputArray,','));