は、私はすべてのオプションが ApacheのCLIライブラリにString []型の入力で提供されているかどうかをチェックするための標準的な方法が表示されません。つまり、私のオプションはすべてコマンドラインでREUIREDされます。それ以外の場合は、例外をスローする必要があります。すべての引数がApache Commons CLIで確実に提供されるようにする方法は?
Imは、回避策として、次のことをしようとしますが、if文でnullポインタ例外を取得... THIS ON
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:のgetopt()メソッドは、引数に短い名前を提供しているようです。私はopt.getLongName()とop.getName()を置き換える場合
はしかし、...それは働きます!いずれの場合においても
..私は2つの質問があります。
1)なぜオプションがnullの名前、まだnull以外LONGNAMEを持っているでしょうか?
2)単純にすべてのオプションがString []を提供していることを確認する方法はありますか?例えば、私が呼び出すしたいと思います:
if(! options.isAllProvided())
throw new ParseException("You are missing some options ! " + StringUtils.join(userInputArray,','));
だけ気づい:その短い名前でオプションを取得するためには、むしろgetArgNameよりのgetopt()、()、または任意の他のメソッドを呼び出します。 – jayunit100