我沒有看到一個標準的方式來檢查是否所有的選項都提供在一個String []輸入到 apache的CLI庫。那是 - 我的選項都是在命令行REUIRED,否則,我想拋出異常。如何確保所有參數都在Apache Commons 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的()方法似乎提供了論據簡稱。
但是,如果我用opt.getLongName()替換op.getName()...它的工作原理!
在任何情況下..我有2個問題:
1)爲什麼會一個選項有一個空的名字,但一個非空LONGNAME?
2)有沒有辦法簡單地確保所有選項都提供了String []?例如,我想呼籲:
if(! options.isAllProvided())
throw new ParseException("You are missing some options ! " + StringUtils.join(userInputArray,','));
只需注意:爲了通過短名稱獲得選項,可以調用getOpt()而不是getArgName()或任何其他方法。 – jayunit100 2011-12-21 22:19:20