Javaのコマンドライン引数

1. 前書き

引数を使用してコマンドラインからアプリケーションを実行することは非常に一般的です。 特にサーバー側で。 *通常、アプリケーションが実行のたびに同じことを行うのは望ましくありません。その動作を何らかの方法で構成する必要があります。*
この短いチュートリアルでは、Javaでコマンドライン引数を処理する方法を探ります。

2. Javaでのコマンドライン引数へのアクセス

  • _main_メソッドはJavaアプリケーションのエントリポイントであるため、JVMは引数を介してコマンドライン引数を渡します。*

    従来の方法は、_String_配列を使用することです。
public static void main(String[] args) {
    // handle arguments
}
ただし、Java 5では、羊の衣服の配列である可変引数が導入されました。 したがって、_String_可変引数を使用して_main_を定義できます。
public static void main(String... args) {
    // handle arguments
}
それらは同一なので、どちらを選択するかは個人の好みと好み次第です。
  • _main_メソッドのmethodパラメーターには、実行時に渡したのと同じ順序でコマンドライン引数が含まれています。*取得した引数の量にアクセスしたい場合は、配列の_length_を確認するだけです。

    たとえば、引数の数とその値を標準出力に出力できます。
public static void main(String[] args) {
    System.out.println("Argument count: " + args.length);
    for (int i = 0; i < args.length; i++) {
        System.out.println("Argument " + i + ": " + args[i]);
    }
}
一部の言語では、最初の引数がアプリケーションの名前になることに注意してください。 一方、Javaでは、この配列には引数のみが含まれます。

3. コマンドライン引数を渡す方法

コマンドライン引数を処理するアプリケーションができたので、試してみたいと思います。 どんなオプションがあるのか​​見てみましょう。

3.1. コマンドライン

最も明白な方法はコマンドラインです。 _main_メソッドを含むクラス_com.baeldung.commandlinearguments.CliExample_をすでにコンパイルしていると仮定しましょう。
その後、次のコマンドで実行できます。
java com.baeldung.commandlinearguments.CliExample
次のような出力が生成されます。
Argument count: 0
これで、クラス名の後に引数を渡すことができます。
java com.baeldung.commandlinearguments.CliExample Hello World!
そして出力は次のとおりです。
Argument count: 2
Argument 0: Hello
Argument 1: World!
通常、アプリケーションを_.class_ファイルの束としてではなく、jarファイルとして公開します。 _cli-example.jar_にパッケージ化し、_com.baeldung.commandlinearguments.CliExample_をメインクラスとして設定したとします。
これで、次の方法で引数なしで実行できます。
java -jar cli-example.jar
または引数付き:
java -jar cli-example.jar Hello World!
Argument count: 2
Argument 0: Hello
Argument 1: World!
  • Javaは、クラス名またはjarファイル名の後に渡すすべての引数をアプリケーションの引数として扱うことに注意してください*。 したがって、それ以前に渡すものはすべてJVM自体の引数です。

3.2. エクリプス

アプリケーションの作業中に、希望どおりに機能するかどうかを確認します。
Eclipseでは、実行構成の助けを借りてアプリケーションを実行できます。 たとえば、実行構成は、使用するJVM、エントリポイント、クラスパスなどを定義します。 そしてもちろん、コマンドライン引数を指定できます。
適切な実行構成を作成する最も簡単な方法は、_main_メソッドを右クリックし、コンテキストメニューから_Run As> Java Application_を選択することです。
link:/uploads/eclipse-run-100x92.png%20100w []
これにより、プロジェクト設定を尊重する設定でアプリケーションを即座に実行します。
引数を提供するには、その実行構成を編集する必要があります。 _Run> Run Configurations…_メニューオプションを使用して実行できます。 ここで、_Arguments_タブをクリックして、_Program arguments_テキストボックスに入力する必要があります。
link:/uploads/eclipse-configure-100x80.png%20100w []
_Run_を押すと、アプリケーションが実行され、入力した引数が渡されます。

3.3. IntelliJ

IntelliJも同様のプロセスを使用してアプリケーションを実行します。 これらのオプションを単に構成と呼びます。
最初に、_main_メソッドを右クリックしてから、_Run 'CliExample.main()':_を選択する必要があります。
link:/uploads/intellij-run-100x75.png%20100w []
これによりプログラムが実行されますが、さらに設定するために_Run_リストに追加されます。
そのため、引数を構成するには、_Run> Edit Configurations…_を選択し、_Program arguments_テキストボックスを編集する必要があります。
link:/uploads/intellij-configure-1024x646-100x63.png%20100w []
その後、[OK]をクリックして、たとえばツールバーの[実行]ボタンを使用して、アプリケーションを再実行する必要があります。

3.4. NetBeans

NetBeansは、実行プロセスおよび構成プロセスとも一致しています。
_main_メソッドを右クリックし、_Run File:_を選択して、最初にアプリケーションを実行する必要があります。
link:/uploads/netbeans-run-100x77.png%20100w []
前と同様に、これにより実行構成が作成され、プログラムが実行されます。
次に、実行構成で引数を構成する必要があります。 _Run> Set Project Configuration> Customize…_を選択することにより、それを行うことができます。次に、左側で_Run_を実行し、_Arguments_テキストフィールドに入力する必要があります。
link:/uploads/netbeans-configure-100x72.png%20100w []
その後、[OK]をクリックしてアプリケーションを起動します。

4. サードパーティのライブラリ

*コマンドライン引数の手動処理は、単純なシナリオでは簡単です。 ただし、要件が複雑になるにつれてコードも複雑になります。*したがって、複数のコマンドラインオプションを使用してアプリケーションを作成する場合は、サードパーティライブラリを使用する方が簡単です。
幸いなことに、ほとんどのユースケースをサポートするライブラリが多数あります。 2つの一般的な例は、https://www.baeldung.com/java-picocli-create-command-line-program [Picocli]とlink:/spring-shell-cli[Spring Shell]です。

5. 結論

アプリケーションの動作を構成可能にすることは常に良い考えです。 この記事では、コマンドライン引数を使用してその方法を説明しました。 さらに、これらの引数を渡すさまざまな方法についても説明しました。
いつものように、サンプルはhttps://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-lang-2[GitHubで]から入手できます。