web-dev-qa-db-ja.com

Java Eclipseのパラメーターを持つメインメソッドの呼び出し

開発中(およびデバッグ)に、Java class 'public static void main(String [] argv)メソッドをEclipseから直接実行することは非常に便利です(使用[名前を付けて実行]コンテキストメニュー)。

同様に、実行用のコマンドラインパラメーターを指定する簡単な方法はありますか?私が今やっていることは、「ダイアログの実行」に移動し、さまざまな設定をクリックして、VMとプログラム引数を指定し、そこに入力することができるタブに移動します。永続的なランタイム構成設定と1回限りの呼び出しパラメーターを混在させたくありません。代わりに、どこかでチェックボックスをオンにするか、別のメニュー項目「Run as Java application withコマンドライン」)、毎回コマンドラインの入力を求められます(ニースの履歴があります)。

31
Thilo

この回答はEclipse 3.4に基づいていますが、Eclipseの古いバージョンでも機能するはずです。

[実行...]を選択すると、実行構成に移動します。

Java実行構成)の[引数]タブで、変数$ {string_Prompt}を表示するように構成します(変数をクリックして取得するか、コピーして直接設定できます)。

その実行構成を使用するたびに(後で名前を付けられるように名前を付けます)、コマンドライン引数の入力を求められます。

50
MetroidFan2002

Uriは間違っています。Eclipseのメインメソッドにパラメーターを直接追加する方法がありますが、パラメーターはあまり柔軟ではありません(一部の動的パラメーターは許可されます)。必要なことは次のとおりです。

  1. クラスをそのまま1回実行します。
  2. Run -> Run configurations...に移動します
  3. 左側のリストから、Java Applicationの下のリストからクラスを選択するか、その名前をフィルターボックスに入力します。
  4. [引数]タブを選択し、Program argumentsボックスに引数を書き込みます。明確でない場合に備えて、空白で区切られているため、"a b c"(引用符なし)は、引数a、b、cをプログラムに渡すことを意味します。
  5. 手順1と同じようにクラスを再度実行します。

ただし、Uriが言ったようにJUnit/wrapperクラスを使用することをお勧めします。これにより、実際のパラメーターをより適切に制御できるようになるためです。

16
Esko

私の知る限り、このためのEclipseには組み込みのメカニズムはありません。

最も近い方法は、これらの値の入力を求めるラッパーを作成し、(ハードコードされた)メインを呼び出すことです。その後、終了したプロセスをクリアしない限り、実行履歴を取得します。これに関する2つのバリエーションは、JUNitを使用するか、インジェクションまたはパラメーターを使用して、ラッパーが常にメインの正しいクラスに接続するようにすることです。

2
Uri

私はあなたの用途がわからないが、通常は複数のコマンドラインパラメーターしか使用しないのが便利だと思うので、これらのシナリオのそれぞれは1つの実行構成を取得し、実行履歴から必要なものを選ぶだけです。

あなたが提案している機能は、ちょっとやり過ぎのようです、IMO。

1
Yuval Adam

文字列引数内にスペースがある場合は、次を実行します。

実行>実行構成> Java Application> Arguments> Program arguments

  1. 文字列引数を引用符で囲みます
  2. 各引数をスペースまたは改行で区切ります

別のアイデア:

すべてのパラメーターをプロパティファイルに配置し(1つのパラメーター=このファイルの1つのプロパティ)、メインメソッドでこのファイルを読み込みます(Properties.load(*fileInputStream*)を使用)。したがって、1つの引数を変更する場合は、args.propertiesファイルを編集し、それ以上の手順を実行せずにアプリケーションを起動するだけです...

もちろん、これは開発目的のためだけのものですが、頻繁に引数を変更する必要がある場合は本当に役立ちます...

0
Romain Linsolas