jay*_*100 7 java error-checking apache-commons apache-commons-cli
我没有看到一种标准方法来检查是否所有选项都在String []输入中提供给apache的CLI库.那是 - 我的选项在命令行都是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());
}
Run Code Online (Sandbox Code Playgroud)
更新:getOpt()方法似乎提供了参数短名称.
但是,如果我用op.getLongName()替换op.getName()......它可以工作!
无论如何......我有两个问题:
1)为什么一个选项有一个空名称,但是一个非null的longName?
2)有没有办法简单地确保所有选项都提供String []?例如,我想打电话:
if(! options.isAllProvided())
throw new ParseException("You are missing some options ! " + StringUtils.join(userInputArray,','));
Run Code Online (Sandbox Code Playgroud)
以下是如何设置需要的选项:
Option logfile = OptionBuilder.withArgName( "file" )
.isRequired() // make it required
.hasArg()
.withDescription( "use given file for log" )
.create( "logfile" );
Run Code Online (Sandbox Code Playgroud)
(我认为没有一种简单的方法可以一步完成所有选项)
| 归档时间: |
|
| 查看次数: |
7431 次 |
| 最近记录: |