[Java] jarの作成方法 – Javaの実行ファイルを作成

2017年8月10日(更新: 2017年8月10日)

Java で作ったプログラムを、ダブルクリックで実行可能なアプリケーションにするには jarJava Archive) という形式にします。

Javaの実行可能な形式であるjar

jar は、プログラムの動作に必要な classファイル.class) やプログラムで使用する画像などのリソースファイル、実行の起点となるクラスを指定したマニフェストなどをまとめて圧縮したアーカイブファイル形式です。

Java によるアプリケーションであるため、複数のOS(WindowsやmacOSなど)で同じように動作するという利点があります。また、jar の圧縮形式は、実質的には zip であるため、zip と同じように解凍することもできます。

今回は、実際に Java のソースコード(.java)から classファイル を作成し、それから実行可能な jar を作成するためのコマンドや手順について紹介します。

ソースコードからclassファイルを作成(コンパイル)

jar を作成するためには、ソースコード(.java)ではなく、それをコンパイルして作られるclassファイル(.class)が必要です。

classファイルの作成方法については以前も紹介しましたが、今回はソースコードをコンパイルしてclassファイルを作成する際のコマンドについて改めて紹介します。

以下のような内容のソースコード(Main.java)があるとします。これは、コンソールに単純なメッセージを表示するだけのクラス Main と、メッセージとウィンドウを表示するクラス MyClass の2つのクラスを含むソースコードです。

public class Main {

	public static void main(String[] args) {
		System.out.println("Mainクラスのmainメソッド実行");
		
		new MyClass();
	}
}

class MyClass {
	
	MyClass() {
		System.out.println("MyClassクラスのコンストラクタ実行");

		JFrame frame = new JFrame("テスト");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(300, 200);
		frame.setVisible(true);
	}
}

これを適当なディレクトリに保存してください。

Javaのソースコードを保存

次に、コマンドラインインターフェース(Windowsならコマンドプロンプト、macOSならターミナル)を開いて、保存したディレクトリをカレントディレクトリとします。

そして、ソースコードをコンパイルするコマンド「javac」を使います。

javacコマンドでソースコードをコンパイル

すると、ソースコードと同じディレクトリにclassファイルが作成されます。

ソースコードのコンパイルによってできたclassファイル

classファイルは、その名の通り、一つひとつのクラスをファイル化したものです。

したがって、一つのソースコードから一つのclassファイルができるわけではなく、複数のクラスを含むソースコードであれば、一つのソースコードから複数のclassファイルが作られます

マニフェスト(.mf)を作成

jar を実行可能にするためには、classファイルに加えてマニフェストと呼ばれるテキストファイルが必要になります。

マニフェストには、以下の書式でmainメソッドを含むクラス名を指定します。

Main-Class: クラス名

今回であれば、クラス Main にmainメソッドが含まれていますので、以下のように書きます。

Main-Class: Main

マニフェストの入力においては、以下の2点に注意してください。

  • コロン(:)の後に半角スペースを1つ入れる
  • 行の最後で必ず改行する

マニフェストのファイル名は、拡張子が .mf であれば、どんな名前でも構いませんが、ここでは通例として manifest.mf とします。

jarの作成に必要なマニフェストファイル

classファイルとマニフェストからjarを作成

以上で、jar を作るためのファイルの用意ができました。

実際に jar を作成するには、コマンド jar を使用します。このコマンドには、以下のようなオプションがあります。

jarコマンドのオプションなど

主に使用するオプションは、c、v、f、mの4つです。実際にこれらを使用して、jar を作成するコマンドの書式は以下の通りです。

jar cvfm [作成するjarの名前] [マニフェストの名前] [必要なクラスファイル...]

複数のクラスファイルを使用する場合は、半角スペースで区切って指定します。今回の例では、以下のコマンドによって jar ファイルが作れます。

コマンドラインで jar を作成するコマンド

完成した jar は、以下のようになります。

jarコマンドによってできた実行形式のJavaアプリケーション

作成した jar を実行

作成された jar のアイコンをダブルクリックすると、ウィンドウが表示されます。

jarから実行したJavaアプリ

コマンドラインからも、以下のjavaコマンドで実行できます。

java -jar [実行するjarファイル名]

この方法で実行した場合、コンソールのメッセージを確認することができます。

コマンドからJavaアプリを実行した場合のコンソールのメッセージ

もしダブルクリックしても何も表示されない場合は、コマンドラインから実行してみると、エラーメッセージを確認することができます。

例えば、マニフェストの入力が正しくないと、実行時に以下のようなエラーが表示されます。

○○.jarにメイン・マニフェスト属性がありません

jar実行時にマニフェストの入力に誤りがある場合のエラー

このエラーが現れた場合は、マニフェストファイルが上記の書式に従っているかを確認してみてください。

以上がコマンドラインによる jar の作成方法です。

Eclipseによるjarの作成

IDEからであれば、簡単に jar を作ることができます。例えば Eclipse では、以下の手順で作成可能です。

(動作はバージョン Oxygen で確認しています)

まず、jarとしたいプロジェクトのフォルダを右クリックして、エクスポートを選択します。

Eclipseプロジェクトをエクスポート

その後の画面で Java > JAR File を選択します。

Exportの対象をjarにする

次の画面で、jarファイルに必要なファイルと完成したjarファイルの出力先を指定します。

jarファイルの出力設定

「Next」を押して、次の画面に移行します。

オプション画面

そのまま「Next」を押してください。

Eclipseによるjarのマニフェスト設定

この画面では、マニフェストの設定を行います。「Select the class of the application entry point:」の項目に、mainメソッドを含むクラスを指定してください。

フォームの右にある「Browse」を押すと、以下のようなダイアログでクラスを指定できます。

jarのエントリーポイントを指定

これは、手動でマニフェストを作る場合の中身である「Main-Class: クラス名」に相当します。

以上を設定して「Finish」を押すと jar が出力されます。

以上が Eclipse による jar の作成方法です。

コメントを残す

メールアドレスが公開されることはありません。