Table of Contents
Java で作ったプログラムを、ダブルクリックで実行可能なアプリケーションにするには jar(Java Archive) という形式にします。
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); } }
これを適当なディレクトリに保存してください。
次に、コマンドラインインターフェース(Windowsならコマンドプロンプト、macOSならターミナル)を開いて、保存したディレクトリをカレントディレクトリとします。
そして、ソースコードをコンパイルするコマンド「javac」を使います。
すると、ソースコードと同じディレクトリにclassファイルが作成されます。
classファイルは、その名の通り、一つひとつのクラスをファイル化したものです。
したがって、一つのソースコードから一つのclassファイルができるわけではなく、複数のクラスを含むソースコードであれば、一つのソースコードから複数のclassファイルが作られます。
マニフェスト(.mf)を作成
jar を実行可能にするためには、classファイルに加えてマニフェストと呼ばれるテキストファイルが必要になります。
マニフェストには、以下の書式でmainメソッドを含むクラス名を指定します。
Main-Class: クラス名
今回であれば、クラス Main にmainメソッドが含まれていますので、以下のように書きます。
Main-Class: Main
マニフェストの入力においては、以下の2点に注意してください。
- コロン(:)の後に半角スペースを1つ入れる
- 行の最後で必ず改行する
マニフェストのファイル名は、拡張子が .mf であれば、どんな名前でも構いませんが、ここでは通例として manifest.mf とします。
classファイルとマニフェストからjarを作成
以上で、jar を作るためのファイルの用意ができました。
実際に jar を作成するには、コマンド jar を使用します。このコマンドには、以下のようなオプションがあります。
主に使用するオプションは、c、v、f、mの4つです。実際にこれらを使用して、jar を作成するコマンドの書式は以下の通りです。
jar cvfm [作成するjarの名前] [マニフェストの名前] [必要なクラスファイル...]
複数のクラスファイルを使用する場合は、半角スペースで区切って指定します。今回の例では、以下のコマンドによって jar ファイルが作れます。
完成した jar は、以下のようになります。
作成した jar を実行
作成された jar のアイコンをダブルクリックすると、ウィンドウが表示されます。
コマンドラインからも、以下のjavaコマンドで実行できます。
java -jar [実行するjarファイル名]
この方法で実行した場合、コンソールのメッセージを確認することができます。
もしダブルクリックしても何も表示されない場合は、コマンドラインから実行してみると、エラーメッセージを確認することができます。
例えば、マニフェストの入力が正しくないと、実行時に以下のようなエラーが表示されます。
○○.jarにメイン・マニフェスト属性がありません
このエラーが現れた場合は、マニフェストファイルが上記の書式に従っているかを確認してみてください。
以上がコマンドラインによる jar の作成方法です。
Eclipseによるjarの作成
IDEからであれば、簡単に jar を作ることができます。例えば Eclipse では、以下の手順で作成可能です。
(動作はバージョン Oxygen で確認しています)
まず、jarとしたいプロジェクトのフォルダを右クリックして、エクスポートを選択します。
その後の画面で Java > JAR File を選択します。
次の画面で、jarファイルに必要なファイルと完成したjarファイルの出力先を指定します。
「Next」を押して、次の画面に移行します。
そのまま「Next」を押してください。
この画面では、マニフェストの設定を行います。「Select the class of the application entry point:」の項目に、mainメソッドを含むクラスを指定してください。
フォームの右にある「Browse」を押すと、以下のようなダイアログでクラスを指定できます。
これは、手動でマニフェストを作る場合の中身である「Main-Class: クラス名」に相当します。
以上を設定して「Finish」を押すと jar が出力されます。
以上が Eclipse による jar の作成方法です。