PHASE2 LOG

主にIT関連・ゲームのログ

Javaのお勉強~JARについて~

   

アーカイブの意味は複数のファイルを1つにまとめて圧縮したものです。

例としてはzip形式のファイルが挙げられます。

 

JAR(Java ARchive)とは

 

Javaで複数のクラスファイルやその他のファイルを1つにまとめ、圧縮する形式をJARといいます。

ファイルをまとめて容量も小さくできるので、データのやり取りで便利になります。

 

jarコマンドの使い方

 

jarファイルはコマンドプロンプトに、jarコマンドを使用して作成することができます。

以下はjarコマンドの一覧表です。(コマンドプロンプトに「jar」と入力しても確認可)

オプション 説明
c アーカイブを新規作成する
t アーカイブの内容を一覧表示する
x 指定のファイルをアーカイブから抽出する
u 既存アーカイブを更新する
v 標準出力に詳細な出力を生成する
f アーカイブ・ファイル名を指定する
m 指定のマニフェストファイルからマニフェスト情報を取り込む
o ZIP圧縮を使用せず、格納のみ行う
M エントリのマニフェストファイルを作成しない
i 指定のjarファイルのインデックスを生成する
C 指定のディレクトリに変更し、ファイルを取り込む

 

jarコマンドはオプションを組み合わせて使うことが多いようです。

例えば、jarファイルを解凍するには以下のように記述します。

jar xf アーカイブ名.jar

xでファイルを取り出し、fでアーカイブファイルを指定します。

処理の開始と終了をわかりやすくするために、vで詳細表示させるといいそうです。

 

マニフェストファイル

 

マニフェストファイルとは、JARファイルに格納されているファイルの情報を記述したものです。

たしか私がAndroidアプリをかじったときにそんな感じのxmlがあったような…

 

それはさておき、マニフェストファイルを作成してJARファイルに取り込んでおくと、

JARファイルを直接実行できます。

 

JARファイルの実行

 

それでは実際にJARファイルを実行する流れを見てみます。

まずはJavaのソースを3つから紹介。

Test1.java(テスト1と表示するa()メソッドを持つ)

class Test1 {
	void a() {
		System.out.println("テスト1");
	}
}

Test2.java(テスト2と表示するa()メソッドを持つ)

class Test2 {
	void a() {
		System.out.println("テスト2");
	}
}

 

Result.java(Test1クラスとTest2クラスをインスタンス化)

class Result {
	public static void main(String[] args){
		Test1 test1 = new Test1();
		Test2 test2 = new Test2();
		test1.a();
		test2.a();
	}
}

 

これに加えて以下のマニフェストファイルを追加します。

ここではResultは実行したいクラス名です。※クラス名の後ろに改行がないと認識されません。

Manifest.txt

Main-Class: Result(改行)

次にマニフェストファイルを取り込み、JARファイルを作成するコマンドを実行します。

jar cfm A.jar Manifest.txt Test1.class Test2.class Result.class

このコマンドのオプション「cfm」は指定したアーカイブファイル名で

マニフェストファイルを取り込みつつ、jarファイルを新規作成するものです。

後ろにマニフェストファイル名と格納したいクラスファイル名を記述します。

 

いよいよJARファイルを実行するには以下のコマンドを入力します。

java -jar A.jar

 

上記の実行結果は以下のようになります。

テスト1

テスト2

 

JARファイルの意味がなんとなーくわかってきた気がします(´∀`)

最近勉強不足なのでがんばらなきゃですね~

 

人気ブログランキング

 -