問題タブ [apache-commons-cli]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
195 参照

java - Commons CLI がコマンド ライン セットアップを受け入れない

ここではApache Commons CLI 1.2を使用します。2 つのランタイム オプションを必要とする実行可能 JAR がfizzありbuzzます。どちらも引数/値を必要とする文字列です。私は(可能限り)私のアプリを次のように実行したいと思います:

java -jar myapp.jar -fizz "よし、じゃあ!" -バズ「さようなら、さようなら!」

この場合、fizzオプションの値は「Alrighty, then!」などになります。

これが私のコードです:

これを実行すると、次の出力が得られます。

フィズは: null

アプリを思い通りに起動できるようにするには、コードをどうする必要がありますか? または、私がそれに到達できる最も近いものは何ですか?

ボーナスポイント:と引数OptionBuilderの違いを誰かが説明してくれたら、withArgName(...)次のように同じ値を渡しているので:withLongOpt(...)create(...)

0 投票する
2 に答える
2616 参照

java - Java: Apache commons-cli 互いに依存するオプションを処理する方法

私はApache commons-cli v1.3にちょっと苦労していますが、次の問題に対する実用的な解決策をまだ見つけていません:

指定されたパラメーターに応じて、文字列を作成(またはローカルファイルから読み取り)、インラインで編集し、オプションで表示、ローカルファイルへの文字列の書き込み、またはHTTPリクエスト経由で送信するコマンドラインツールがありますサーバーに。

したがって、「作成」の場合は「c」、「読み取り」の場合は「r」、「編集」の場合は「e」(cli 経由)、表示の場合は「d」、「書き込み」の場合は「w」、および「 p" は「サーバーにプッシュ」

もちろん、いくつかの組み合わせは可能です。たとえば、この文字列を作成して、ファイルから読み書きすることなくプッシュできるようにする必要があります。また、プッシュせずに作成して書き込むことができるはずです...

したがって、パラメーターのセマンティクスは次のとおりです。

明らかに、文字列が「作成」されるとき、それは「読み取り」されてはなりません。「c」reating するときは、cli-parser からのインタラクティブな入力を使用します。「読む」とき、ユーザーがcliからのインタラクティブな入力を介して「e」編集できるようにしたいと思います。残りのパラメータはオプションです。

次へ: 「読む」ときは、ファイル名/パスを指定する必要があります。また、「書く」ときはこれが必要です。とにかく、読み取るファイルと書き込む 2 番目のファイルを指定できるようにする必要があります。したがって、ファイル名には 2 つの引数があり、どちらもオプションです。

結果の構文は次のようになります。

等々。

私はここで少し迷っています。指定されたパラメーター (オプション) に基づいて必要とされる、ファイル名に 2 つの引数を持つように commons-cli を構成するにはどうすればよいですか? これは可能ですか?

0 投票する
1 に答える
5511 参照

java - Apache commons CLI を使用した条件付きコマンド ライン オプション

現在、Apache の共通 CLI ライブラリを使用してコマンド ライン オプションを解析していますが、条件付きの要件を簡単に処理できる方法はないかと考えていました。

たとえば、以下の例では、2 つの必須オプション-a-bオプションの があり-h、説明を表示する必要があります。パーサーが現在動作する方法は、必要なオプションの 1 つが欠落している場合はいつでも ParserException をスローすることを期待するというものです。ここまでは順調ですね。-h私の質問は、が指定されているときに必要なオプションを検索しない方法があるかどうかです。これ-hは、ヘルプのみを出力し、実際にアプリを起動しないのが一般的であるため、他のコマンド ライン オプションのチェックをスキップしたいと思います。

0 投票する
0 に答える
256 参照

java - UNIXからApache CLIを実装したJARを実行する方法

Apache CLI ライブラリを使用して、実行可能な jar ファイルを作成しました。プログラムをEclipseで開発しましたが、問題なく動作します。ただし、これを UNIX (solaris) 環境で実行する必要があり、何も機能していないようです。これが私が使用するコマンドです

$cPath には、必要なすべての jar へのパスがあります。

これを実行しようとすると、Apache CLI の JAR が見つからないというエラーが表示されます。だから、ここに私の質問があります

UNIX で CLI を実装しようとすると、正しい構文がありますか?

必要な JAR へのパスを正しく設定しましたか?

お知らせ下さい。

編集

わかりましたので、ここに私が試したものがあります。jarのメインクラスを次のように実行しました

そしてこれはうまくいきます!ただし、すべてのファイルをjarして実行しようとすると

これは例外をスローします

基本的に、それは私が推測するcli jarを見つけることができません。また、作成したjarファイルに必要なすべてのライブラリを含めようとしましたが、それでも同じエラーが発生します。

お知らせ下さい。

編集2

別の更新。

これは動作します

しかし、メインクラスの名前を提供したくありません。私はすでにマニフェストファイルでそれを定義しています。

お知らせ下さい。

0 投票する
4 に答える
16918 参照

java - ClassNotFoundException: maven での org.apache.commons.cli.ParseException

Linux のコマンドラインから Java プロジェクトを実行しようとしています:

$ java -jar target/my-app.jar -csv test.csv

このエラーが発生しました

私はmaven-3を使用しています。ここで私のビルドmaven構成:

そして私の commons-cli 依存宣言

コードと依存関係をクラスから削除すると、エラーは発生しなくなります。

ありがとうございました !

0 投票する
2 に答える
3272 参照

java - CommandLineParser#parser の呼び出し時に org.apache.commons.cli を使用して java.lang.IllegalAccessError が発生する

Apache Commons CLI ライブラリを使用して、Eclipse プロジェクトのコマンド ライン オプションを解析しようとしています。使用シナリオの例に大まかに従っています。

Eclipse プロジェクトのルートにcommons-cli-1.3.1あるフォルダーにフォルダーを追加しました。lib

これをインポートに追加しました:

そして、これは私のトップにmain

エラーなしでコンパイルされますが、parser.parse呼び出しを実行すると次のエラーが生成されます。

この時点では、クラス ローダーは使用していません。

このエラーはどういう意味ですか? エラーを解決して引数を解析するにはどうすればよいですか?

0 投票する
1 に答える
1379 参照

java - CommandLine の Commons CLI の空のオプション

Commons CLI でのOptions適用方法がわかりません。DefaultParser

CommandLineオブジェクトが作成されるとき、割り当てられたOptionsものは常に空です。

次のコード ブロックは、Commons CLI ドキュメントをどのように解釈したかです。

なぜそれline.getOptions()が空で、オプションを適切に適用するのですか?