Nie widzę standardowego sposobu sprawdzania, czy wszystkie opcje są dostępne w ciągu String [] do biblioteki interfejsu API Apache. To znaczy - moje opcje są REUIRED w wierszu poleceń, w przeciwnym razie chcę wyjątek do rzucenia.Jak zapewnić, że wszystkie argumenty są dostarczane w interfejsie API Apache Commons?
Próbuję następujący jako obejście, ale coraz wyjątek NullPointer w instrukcji 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());
}
UPDATE ON TO: metoda getopt() zdaje się dostarczać argumentów krótką nazwę.
Jednak, jeśli zamieniam op.getName() na opt.getLongName() ... to działa!
W każdym razie .. Mam 2 pytania:
1) Dlaczego opcja mają zerową nazwisko, jeszcze niezerowym longname?
2) Czy istnieje sposób, aby po prostu upewnić się, że wszystkie opcje są dostarczane String []? Na przykład, chciałbym zadzwonić:
if(! options.isAllProvided())
throw new ParseException("You are missing some options ! " + StringUtils.join(userInputArray,','));
Po prostu zauważyłem: Aby uzyskać opcję po nazwie skróconej, należy wywołać metodę getOpt() zamiast metody getArgName() lub dowolnej innej metody. – jayunit100