コマンドラインからJavaアプリケーションを実行する
1. 概要
通常、すべての意味のあるアプリケーションには、依存関係として1つ以上のJARファイルが含まれています。 ただし、JARファイル自体がスタンドアロンアプリケーションまたはWebアプリケーションを表す場合があります。
ここでは、スタンドアロンアプリケーションのシナリオに焦点を当てます。 以降、これをJARアプリケーションと呼びます。
このチュートリアルでは、最初にJARアプリケーションを作成する方法を学習します。 後で、コマンドライン引数の有無にかかわらず、JARアプリケーションを実行する方法を学習します。
2. JARアプリケーションを作成します
JARファイルには、1つ以上のメインクラスを含めることができます。 各メインクラスはアプリケーションのエントリポイントです。したがって、JARファイルには理論的には複数のアプリケーションを含めることができますが、実行するには少なくとも1つのメインクラスが含まれている必要があります。
JARファイルのマニフェストファイルに1つのエントリポイントを設定できます。この場合、JARファイルは実行可能JARです。 メインクラスはそのJARファイルに含まれている必要があります。
まず、クラスをコンパイルし、マニフェストファイルを使用して実行可能JARを作成する方法の簡単な例を見てみましょう。
$ javac com/baeldung/jarArguments/*.java
$ jar cfm JarExample.jar ../resources/example_manifest.txt com/baeldung/jarArguments/*.class
実行不可能なJARは、マニフェストファイルでMain-Classが定義されていないJARファイルです。 後で説明するように、JARファイル自体に含まれているメインクラスを引き続き実行できます。
マニフェストファイルなしで実行不可能なJARを作成する方法は次のとおりです。
$ jar cf JarExample2.jar com/baeldung/jarArguments/*.class
3. Javaコマンドライン引数
他のアプリケーションと同様に、JARアプリケーションはゼロ引数を含む任意の数の引数を受け入れます。 それはすべて、アプリケーションのニーズによって異なります。
これにより、ユーザーはアプリケーションの起動時に構成情報を指定できます。
その結果、アプリケーションはハードコードされた値を回避でき、それでも多くの異なるユースケースを処理できます。
引数には、任意の英数字、Unicode文字、および場合によってはシェルで許可されている特殊文字(@など)を含めることができます。
引数は1つ以上のスペースで区切られます。引数にスペースを含める必要がある場合は、スペースを引用符で囲む必要があります。 一重引用符または二重引用符のどちらでも問題なく機能します。
通常、一般的なJavaアプリケーションの場合、アプリケーションを呼び出すときに、ユーザーはクラス名の後にコマンドライン引数を入力します。
ただし、JARアプリケーションの場合は必ずしもそうとは限りません。
すでに説明したように、Javaメインクラスのエントリポイントはmainメソッドです。 引数はすべて文字列であり、文字列配列としてメインメソッドに渡されます。
とはいえ、アプリケーション内では、 String 配列の任意の要素を、 char 、 int 、
4. 引数を指定して実行可能ファイルJARを実行する
引数を使用して実行可能JARファイルを実行するための基本的な構文を見てみましょう。
java -jarjar-file-name[args…]
以前に作成された実行可能JARは、渡された引数を出力するだけの単純なアプリケーションです。 任意の数の引数で実行できます。
これは2つの引数を持つ例です:
$ java -jar JarExample.jar "arg 1" arg2@
この出力はコンソールに表示されます。
Hello Baeldung Reader in JarExample!
There are 2 argument(s)!
Argument(1):arg 1
Argument(2):arg2@
したがって、実行可能JARを呼び出す場合、コマンドラインでメインクラス名を指定する必要はありません。JARファイル名の後に引数を追加するだけです。 実行可能JARファイル名の後にクラス名を指定すると、それが実際のメインクラスの最初の引数になります。
ほとんどの場合、JARアプリケーションは実行可能なJARです。 実行可能JARは、マニフェストファイルで定義された最大1つのメインクラスを持つことができます。
したがって、同じ実行可能JARファイル内の他のアプリケーションをマニフェストファイルに設定することはできませんが、実行不可能なJARの場合と同じように、コマンドラインから実行できます。 次のセクションでその方法を正確に説明します。
5. 引数を指定して実行不可能なJARを実行する
実行不可能なJARファイルでアプリケーションを実行するには、-jarの代わりに-cpオプションを使用する必要があります。
-cp オプション(クラスパスの略)を使用して、実行するクラスファイルを含むJARファイルを指定します。
java -cp jar-file-namemain-class-name[args…]
ご覧のとおり、この場合、コマンドラインにメインクラス名を含め、その後に引数を含める必要があります。
以前に作成された実行不可能なJARには、同じ単純なアプリケーションが含まれています。 任意の(ゼロを含む)引数を使用して実行できます。
これは2つの引数を持つ例です:
$ java -cp JarExample2.jar com.baeldung.jarArguments.JarExample "arg 1" arg2@
そして、上で見たように、次の出力が表示されます。
Hello Baeldung Reader in JarExample!
There are 2 argument(s)!
Argument(1):arg 1
Argument(2):arg2@
6. 結論
この記事では、引数を使用する場合と使用しない場合のコマンドラインでJARアプリケーションを実行する2つの方法を学びました。
また、引数にスペースと特殊文字を含めることができることも示しました(シェルで許可されている場合)。
いつものように、例のコードはGitHubでから入手できます。