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

Я не вижу стандартного способа проверки наличия всех опций во входных данных String[] библиотеки CLI apache. То есть - все мои параметры REUIRED в командной строке, в противном случае, я хочу, чтобы сгенерировать исключение.

Я пытаюсь следующее как обходной путь, но получаю исключение 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) Есть ли способ просто убедиться, что во всех опциях указана строка []? Например, я хотел бы позвонить:

  if(! options.isAllProvided())
     throw new ParseException("You are missing some options ! " + StringUtils.join(userInputArray,','));

1 ответ

Вот как вы можете установить требуемый параметр:

Option logfile = OptionBuilder.withArgName( "file" )
            .isRequired() // make it required
            .hasArg()
            .withDescription(  "use given file for log" )
            .create( "logfile" );

(Я не думаю, что есть простой способ сделать все необходимые параметры за один шаг)

Другие вопросы по тегам