Как убедиться, что все аргументы предоставлены в Apache Commons CLI?

Я не вижу стандартного способа проверки, все ли параметры предоставлены во вводе String [] для Библиотека CLI apache. То есть - все мои параметры ОБЯЗАТЕЛЬНЫ в командной строке, в противном случае я хочу, чтобы исключение было сгенерировано.

Я пробую следующее в качестве обходного пути, но получаю исключение Nullpointer в операторе 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 () ... это сработает!

В любом случае .. У меня 2 вопроса:

1) Почему опция должна иметь пустое имя, но ненулевое longName?
2) Есть ли способ просто убедиться, что все параметры предоставлены String []? Например, я хотел бы позвонить:

  if(! options.isAllProvided())
     throw new ParseException("You are missing some options ! " + StringUtils.join(userInputArray,','));
7
задан Emmanuel Bourg 29 May 2012 в 20:37
поделиться