Linuxターミナルで.Jarファイルを作成して実行する方法


JAR Java ARchive )は、プラットフォームに依存しないファイル形式で、多数のJavaクラスファイルと、テキスト、画像などの関連メタデータやリソースを単一のファイルにまとめるために使用されます配布用です。

Javaランタイムがアプリケーション全体を1つのアーカイブファイルに効率的にデプロイすることを可能にし、セキュリティ、その要素の圧縮、ダウンロード時間の短縮、パッケージのシーリングとバージョン管理の可能性、移植性のサポートなどの多くの利点を提供します。拡張機能のパッケージもサポートしています。

この記事では、簡単なJavaアプリケーションを作成してそれを JAR ファイルにまとめる方法と、Linux端末から .jar ファイルを実行する方法を説明します。

これを行うには、Javaアプリケーションを起動するためのjavaコマンドラインツールと、 JAR ファイルにカプセル化されたプログラムを実行するための -jar フラグが必要です。このフラグを使用すると、指定したJARファイルがすべてのユーザークラスのソースになり、他のクラスパス設定は無視されます。

LinuxでJARファイルを作成する方法

1. まず、デモ用に TecmintApp というアプリケーションのmainメソッドを使用して単純なJavaクラスを作成します。

$ vim TecmintApp.java

次のコードをコピーして TecmintApp.java ファイルに貼り付けます。

public class TecmintApp {
	public static void main(String[] args){
		System.out.println(" Just executed TecmintApp! ");
	}
}

ファイルを保存して閉じます。

2. 次に、 javac および jar ユーティリティを使用して、クラスをコンパイルして JAR ファイルにパックする必要があります示されているように。

$ javac -d . TecmintApp.java
$ ls
$ jar cvf tecmintapp.jar TecmintApp.class
$ ls

3. tecmintapp.jar が作成されたら、次に示すように java コマンドを使用してファイルを実行できます。

$ java -jar tecmintapp.jar

no main manifest attribute, in tecmintapp.jar

上記のコマンドの出力から、エラーが発生しました。 JVM Java仮想マシン)はメインのマニフェスト属性を見つけることができなかったため、メインメソッドを含むメインクラスを見つけることができませんでした( public static void main(String [] args))

JAR ファイルには、 Main-Class:classname の形式の行を含むマニフェストが必要です。この行には、アプリケーションの開始点となるmainメソッドでクラスを定義します。

4. 上記のエラーを修正するには、マニフェスト属性をコードと共に含めるように JAR ファイルを更新する必要があります。 MANIFEST.MF ファイルを作成しましょう。

$ vim MANIFEST.MF

次の行を MANIFEST.MF ファイルにコピーして貼り付けます。

Main-Class:  TecmintApp

ファイルを保存し、次のコマンドを使用して MANIFEST.MF ファイルを tecmintapp.jar に追加します。

$ jar cvmf MANIFEST.MF tecmintapp.jar TecmintApp.class

5. 最後に JAR ファイルをもう一度実行すると、出力に示されているように期待どおりの結果が得られます。

$ java -jar tecmintapp.jar

Just executed TecmintApp!

詳細については、 java javac jar コマンドのマニュアルページを参照してください。

$ man java
$ man javac
$ man jar

参照:JARファイルへのプログラムのパッケージ化

それで全部です!この短い記事では、簡単なJavaアプリケーションを作成してJARファイルにまとめる方法を説明し、端末から .jar ファイルを実行する方法を説明しました。質問や補足のアイデアがありましたら、下記のフィードバックフォームをご利用ください。