4

私は現在、ライブラリApache Commons CLI 1.3.1を使用してコマンドライン引数を解析し、実行可能な jar での実行フローを制御しています。これまでのところ、すべてが非常に簡単で、ドキュメント使用例のページは比較的完全で役に立ちました.

ただし、このライブラリを使用して引数やオプションがないことを検出する方法については、まだ不明です。この状態を検出して、使用法/ヘルプ ステートメントを出力したいと思います。引数配列の長さを確認するだけでこれを回避できましたが、すべてのオプションの存在を確認せずにこの状態を検出する方法がライブラリにあるかどうかを知りたいです。

回避策を残した私のコードは次のとおりです。

public static void main(String[] args)
{
    try
    {
       // create Options object
       Options options = new Options();

       // add t option
       options.addOption("t", false, "display current time");
       options.addOption("help", false, "print this message");

       CommandLineParser parser = new DefaultParser();
       CommandLine cmd = parser.parse(options, args);

       if(cmd.hasOption("t")) {
           log.debug("Received option t");
           // Do something
       }

       if (args.length <= 0 || cmd.hasOption("help"))
       {
           // automatically generate the help statement
           HelpFormatter formatter = new HelpFormatter();
           formatter.printHelp( "java -jar Client.jar <option> <arguments>", options);
       }
    }
    catch (Exception ex)
    {
        ex.printStackTrace();
    }
}
4

2 に答える 2

3

getArgListまたはgetArgsメソッドを探していると思います。ドキュメントから:

残っている認識されないオプションと引数を取得します

したがって、これの代わりに:

   if (args.length <= 0 || cmd.hasOption("help"))

次のように使用します。

   if (cmd.getArgs().length == 0 || cmd.hasOption("help"))
于 2016-11-14T19:12:05.317 に答える