7

すべてのオプションがapacheのCLIライブラリへのString[]入力で提供されているかどうかを確認する標準的な方法がわかりません。つまり、私のオプションはすべてコマンドラインで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());
    }

これに関する更新:getOpt()メソッドは引数の短い名前を提供しているようです。

ただし、op.getName()をopt.getLongName()に置き換えると、機能します。

とにかく..私は2つの質問があります:

1)オプションの名前がnullであるのに、longNameがnullでないのはなぜですか?
2)すべてのオプションにString []が提供されていることを簡単に確認する方法はありますか?たとえば、私は電話したいと思います:

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

1 に答える 1

10

オプションを必須に設定する方法は次のとおりです。

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

(必要なすべてのオプションを 1 つのステップで作成する簡単な方法はないと思います)

于 2011-12-21T22:27:53.527 に答える