2
現在、ライブラリApache Commons CLI 1.3.1
を使用してコマンドライン引数を解析し、実行可能なjarファイルの実行フローを制御しています。これまでのところすべてがかなり単純で、documentationとexample usageのページは比較的徹底して役立ちました。Apache Commons CLIを使用してコマンドライン引数/オプションが存在しないことを検出する
ただし、このライブラリを使用して引数やオプションがないことを検出する方法についてはまだ不明です。私はこの状態を検出し、使用法/ヘルプ文を印刷したいと思います。私は引数の配列の長さを調べるだけでこの問題を回避しましたが、ライブラリがすべてのオプションの有無をチェックすることなくこの条件を検出する方法を持っているかどうかを知りたいと思います。
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();
}
}
B eautiful。私はドキュメントを誤解していました。私はこれが特定のオプションのために提出された引数リストだと思っていました。ありがとうございました。 BTWそれは 'cmd.getArgs()。length'でなければなりません。 – Matt1776
あなたのプログラムが引数なしのスイッチを期待している場合、これはうまくいきません。例えば、私がそのメソッドを使用すると、コマンドが 'client.jar -t'であってもヘルプが表示されます – Matt1776
こんにちは、訂正ありがとう!あなたのプログラムが余分な引数を持つべきでないならば、もちろん、あなたは条件を変更すべきであり、実際にはその場合にエラーが発生します。 – janos