2015-11-23 28 views
6

私はApache Commons Cli 1.2で作業していました。この質問とは関係のない理由から、パーサが不明な場合(オプションオブジェクトに追加されていない場合)、引数を無視するようにしました。Apache Commons CLI 1.3.1:未知の引数を無視するには?

例(擬似コード):

Options specialOptions; 
specialOptions.addOption(null, "help", false, "shows help"); 
specialOptions.addOption(null, "version", false, "show version"); 

CommandLineParser parser = new DefaultParser(); 
CommandLine cmd = parser.parse(options, args); //no third argument, since i dont want the program to stop parsing. 
// run program with args: --help --unknown --version 
// program shall parse --help AND --version, but ignore --unknown 

私はこれにパスカル・シェーファーによって溶液を使用: Can Apache Commons CLI options parser ignore unknown command-line options?

これは1.2に私のためにうまくいきました、そしてそれは同様に1.3.1で正常に動作します。しかし、廃止されました。私が使用したパーサーはDefaultParserに置き換えられました。私は機能を調べましたが、そのような方法はありませんprocessOptions

実際には、それ以降のリリースで削除されないコードを使用したいと思います。誰もがこの問題を解決する方法を知っていますか?

+0

質問は、プラグインの古いバージョンについてですが、私もそれを参照していますので、どのようにこれは公約ですか? – leimooo

+0

そして、それは私の質問に賛成できません。 – leimooo

+3

問題を解決するために廃止予定でない方法を明示的に求めているので、私は再開に投票します。 –

答えて

0

これはあなたのユースケースのために働く必要があります。

Options options = new Options(); 
CommandLine commandLine = new DefaultParser().parse(options, args, false); 

あなたのための重要な部分は、未知のオプションが満たされたときに失敗しないようにと言うfalse引数です。

+1

申し訳ありませんが、私は自分自身を悪いと表現していたかもしれません:あなたが例外をスローしなくても、プログラマは引数の解析を停止するので、問題を解決する方法を教えてください。私のユースケースでは、構文解析は続かなければならず、未知の議論は無視されるかスキップされるだけです。質問にいくつかの詳細を追加しようとしています。そのために残念。 – leimooo

+0

これは問題の解決策ではないので、この回答を編集する方が良いですが、それは他の人にとっては別の解決策になる可能性があります。 – SexyNerd

+0

私は上記のオプションを試してParseExceptionを送信します(たとえコードがそうしてはならないと言っても)。おそらくDefaultParserにバグがあります。 – JACH

関連する問題