ダブルクリックで実行

javaの実行のしくみ

ワープロや表計算などWindowsで普通に使用されているプログラムはC言語(C++)で書かれ、Cのコンパイラでコンピュータが直接実行できる形になおされています。Javaのコンパイラ(javac)はクラスファイルを作りますがこれは実行形式でなくjavaが.classの内容を読み込んで実行しています。

Cプログラム  →コンパイラ→     実行ファイル
Javaプログラム →コンパイラ(javac)→ クラスファイル(.class)
        →インタープリタ(javaこれは実行ファイル)が読み込んで実行

また、実行にあたり端末からコマンドをキーボードで打たなければならないのもGUIの流れに反しています。(コマンド方式の操作も慣れると使いやすいのですが、Windowを利用するソフトがコマンドから起動されるのはちょっと…)

ダブルクリックで実行されるようにする

注 Linuxでは,jarファイルがアーカイブとしてすでに位置づけられているために,うまくいかない可能性があります。

一般の実行ファイルと同様の使用感を持たせることができます。例としてSanTaku.javaについてやってみます。

(1)SanTaku.javaをコンパイルすると、SanTaku.class ができます。この他にSanTaku.javaの実行にはMondaishuu.classとToi.classが必要です。この3つを(2)のマニフェストファイルと一緒にまとめます。

(2)次の内容のテキストファイルを作り、適当なファイル名で保存します。この例ではSanTaku.txtとしました。このファイルをマニフェストファイルと呼びます。

Main-Class: SanTaku

この中の SanTakuは実行するmainを含むクラス名です。いままで 「 java クラス名 」 で実行していたクラス名を書きます。

最後は必ず改行します。

(3)jarコマンドで次のように命令します。

$ jar cvfm SanTaku.jar SanTaku.txt SanTaku.class Mondaishuu.class Toi.class

次のような意味です。

cvfm
オプション
c:新規に作成する
v:逐次報告をする 指定しないと黙って仕事をします
f:jarファイル名の指定をする(正確には指定する名前のファイルに書き出す)
m:マニフェストファイルの指定をする
SanTaku.jar
作成するjarファイル名
SanTaku.txt
マニフェストファイル名 (2)でつけた名前とあわせます
SanTaku.class Mondaishuu.class Toi.class
使用するclassファイルのリスト

以下のように表示され SanTaku.jar というファイルができます。

$ jar cvfm SanTaku.jar SanTaku.txt SanTaku.class Mondaishuu.class Toi.class
マニフェストが追加されました。
SanTaku.class を追加中です。(入 = 3512) (出 = 1899)(45% 収縮されました)
Mondaishuu.class を追加中です。(入 = 1918) (出 = 1178)(38% 収縮されました)
Toi.class を追加中です。(入 = 286) (出 = 214)(25% 収縮されました)
$

(4)SanTaku.jarをダブルクリックすると実行できます。

しくみ

jarというのはもともとファイルを圧縮してまとめる「アーカイブソフト」のひとつです。

$ jar cvf matome file01 file02 file03 …

これで matome というファイルに、file01 file02 file03 … が圧縮されてひとまとめにされます。

中身を調べるには、

$ jar tvf matome

解凍して元に戻すには

$ jar xvf matome

この中にマニフェストファイルがあります。 META-INF/MANIFEST.MF ここに実行すべきクラス名を書いておくのが、マニフェストファイル名の指定です。このファイルはそのまままとめられるのではなく、その内容を読み込んで、META-INF/MANIFEST.MF というファイルの中に書き加えられるのです。

Java 2 SDK, Standard Edition(JavaSDK)または、JREと呼ばれる実行環境がインストールされていないと実行できません。

もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified