しかもユーザーに配布するなら、通常のWindowsアプリケーションのように、アイコンをダブルクリックして起動できたほうが便利で親切です。
Javaにはファイルを圧縮する機能として、JARファイル(Java Archive) という仕組みが用意されています。JARファイルは複数のクラスファイルをzip形式で圧縮したものですが、JARファイルを作成するときにオプションを指定することで、ダブルクリックで実行可能なJARファイルを作成することができます。
【1】sample218 フォルダをフォルダごとコピーして、sample219 フォルダを作ります。
【2】今回は以下のようなファイル構成になりますので、コピーした余計なものは削除してください。
*Manifest.txt は以下に掲載します。その他は「コンパイル済みのクラスファイルだけ」だという点に注意してください。
【3】Manifest.txt を新規に作成します。
*「\」はWindowsではエンマークのことです。
保存先 C:\java\sample219
ファイル名 Manifest.txt
Manifest-Version: 1.0
Main-Class: PrefTest
【4】コマンドプロンプトを起動して、カレントディレクトリを sample219 に切り替えます。
*** ここからが今までと違いますので注意してください。 ***
【5】jar cvfm PrefTest.jar Manifest.txt *.class と入力しコマンドを実行します。
【6】成功したらコマンドプロンプトは閉じてください。
【7】sample219 フォルダの中を見ると、「PrefTest.jar」が新たに作成されています。
【8】「PrefTest.jar」をダブルクリックして実行します。
【9】都道府県マスターが表示されました。
*実行には PrefTest.jar 以外は不要です。そのことを確かめるため、 PrefTest.jar だけのフォルダを作ってみましょう。
【10】sample219 フォルダをフォルダごとコピーして、sample220 フォルダを作ります。
【11】PrefTest.jar だけを残し他のファイルは削除します。準備ができたらダブルクリックして実行します。
【12】同じように都道府県マスターが表示されました。PrefTest.jar だけあれば実行できることがわかりました。
それでは PrefTest.jar の中身はどうなっているのでしょうか?
【13】「PrefTest.jar」をコピーして、拡張子を変え「PrefTest.zip」にします。
*「.jar」ファイルはzip形式で圧縮されたファイルですので、拡張子を変えると解凍できます。
【14】「PrefTest.zip」を解凍して中を見ると、クラスファイルと実行に必要なファイルが含まれていることが分かります。
作成した覚えの無いフォルダやファイルは、 jarコマンドが Manifest.txt(マニフェストファイル)から自動的に作成したものです。
【解説】
(1)Manifest.txtにはメインメソッドのあるクラス名を書いているだけです。
Manifest-Version: 1.0
Main-Class: PrefTest
(2)JAR ファイルの作成には、 jarコマンドを使います。
jar cvfm PrefTest.jar Manifest.txt *.class
jar オプション JARファイル名 Manifestファイル名 classファイル名
「*」アスタリスクを付けると、そのフォルダに含まれるすべての classファイルが対象になります。(個別に指定することも可能)
オプションの意味
c アーカイブを新規作成する
v 標準出力に詳細な出力を生成する *省略可
f アーカイブファイル名を指定する *JARファイル名のこと
m 指定のマニフェストファイルからマニフェスト情報を取り込む
詳しくはコマンドプロンプトに jar と入力すると、使い方が表示されます。
【ワンポイント】
実行可能なJARファイルではなく、ただまとめて圧縮するだけなら、Manifest.txtは不要で、以下のように作成できます。
jar cvf PrefTest.jar *.class
このJARファイルを実行するには、メインメソッドのあるクラス名を指定する必要があります。JARファイルは解凍せずにそのまま実行できることがポイントです。
java -cp PrefTest.jar PrefTest
JARファイルの中には複数のクラスが含まれるため、どのクラスから実行するのか教えてあげる必要があるというわけです。実行可能なJARファイルの場合はマニフェストに書いているので、直接実行できるという仕組みです。
JARファイルの形で提供されることはよくあります。例えばJavaの標準ライブラリはクラス数が数千以上ありますが、「rt.jar」としてJARファイルに圧縮されています。その他にも便利なライブラリのほとんどはJARファイルで配布されています。
あなたが作った独自のパッケージも圧縮して、JARファイルとして配布することが可能です。