javaのプログラムを配布するときには、classファイルを配布するのが普通でしょう。.javaのソースファイルではもらった人がコンパイルしなければなりません。
TwoButtonsの様にclassファイルがひとつの時にはTwoButtons.classファイルだけで良いのですが、SanTakuFはSanTakuF.classの他にMondaishuu.classとToi.classが必要です。
このようなときはファイルをアーカイブファイルでまとめて配布するのが便利です。アーカイブは元々公文書などの記録を保管しておく場所のことですが、コンピュータ関係で保存や配布のために複数のファイルをまとめてファイルにしたものを言います。最近は書庫と訳されています。特にjavaで使われるjarという書庫を扱うソフトは書庫のままjavaのプログラムとして実行できるので便利です。
例としてSanTakuF.javaについてやってみます。
(1)次の内容のテキストファイルを作り、適当なファイル名で保存します。この例ではSanTaku.txtとしました。このファイルをマニフェストファイルと呼びます。このファイルは書庫のままjavaのプログラムとして実行するときにどのファイルにmainがあるかを示すために加えます。
Main-Class: SanTakuF
SanTakuFというクラスに実行するmainがあることを示しています。いままで 「 java クラス名 」 で実行していたクラス名を書けば良いのです。
(2)jarコマンドで次のように命令します。
$ jar cvfm SanTakuF.jar SanTakuF.txt SanTakuF.class Mondaishuu.class Toi.class
次のような意味です。
以下のように表示され SanTakuF.jar というファイルができます。
$ jar cvfm SanTakuF.jar SanTakuF.txt SanTakuF.class Mondaishuu.class Toi.class マニフェストが追加されました。 SanTakuF.class を追加中です。(入 = 4170) (出 = 2293)(45% 収縮されました) Mondaishuu.class を追加中です。(入 = 2023) (出 = 1251)(38% 収縮されました) Toi.class を追加中です。(入 = 286) (出 = 212)(25% 収縮されました) $
(3)SanTakuF.jarができます。
jarというのはもともとファイルを圧縮してまとめる「アーカイブソフト」のひとつです。
$ jar cvf matome file01 file02 file03 …
これで matome というファイルに、file01 file02 file03 … が圧縮されてひとまとめにされます。
中身を調べるには、
$ jar tvf matome
解凍して元に戻すには
$ jar xvf matome
中身を調べるにはGUIでもできます。右クリックして「書庫マネージャーで開く」を選びます。
SanTakuF.class Mondaishuu.class Toi.class が格納されています。
マニフェストファイルSanTakuF.txtが見当たりません。マニフェストファイルはそのまままとめられるのではなく、その内容を読み込んで、META-INF/MANIFEST.MF というファイルの中に書き加えられているのです。
右クリックのメニューで一番上にあるものが、ダブルクリックで実行される機能です。現在「書庫マネージャーで開く」になっています。
これを変更するには「プロパティ」を選択します
「開き方」のページを開いて「Sun java 6 Runtime」を選択すると java で開かれる、つまりjavaのプログラムとして実行されることになります。
ダブルクリックして確かめてください。
jarファイルがどこにあってもダブルクリックで実行するとカレントディレクトリがユーザーホームになるので、ファイル選択はユーザーホームからスタートします。
SanTakuF.classだけでなくSanTakuF.jarもそれを起動するランチャを作ることができます。
SanTakuF.jarはランチャがなくてもダブルクリックで実行できますが、アイコンは段ボール箱ですのでランチャを作って好みのアイコンを指定する方が嬉しいでしょう。
デスクトップで右クリックして「ランチャの生成」を選ぶ。
ダイアログの中に必要なものを入力する
今回の例は、javaというフォルダの中のSanTakuF.jarというjarになったjavaプログラムを実行するものです。
[OK]でデスクトップにランチャができます。ダブルクリックでSanTakuF.jarが起動します。
やはりカレントディレクトリがユーザーホームになるので、ファイル選択はユーザーホームからスタートします。
Windowsではjarは書庫と考えられていないので、javaを導入すれば専用のソフトとして関連付けられますから、Linux上より迷うことはありません。
できたjarファイルもOSの違いを超えてダブルクリックで実行できるはずです。
ただ、.desktopファイルはWindowsとは異なります。Windowsで.desktopに近い機能を持つものはショートカットです。
上記 SanTakuF.jar をつくり、実行してみなさい