[PR] 迷惑メール トップページプロ3ゼミJavaJava入門講座三学期単位11 →4時間目

4時間目 JARファイルで一括に

11−4−1.JARファイルの説明

 ファイルを運用する場合に、どのような管理方法が考えれますか。
Javaならソースファイルやclassファイルがありますね。
思いつく方法を列挙してみましょう。
例えば、
・フォルダで管理する
・ソースとclassファイルを圧縮して1つにまとめる
・CDやDVDなどの変更できない外部メディアに保存
等が考えられます。

 Javaでは、一般的な運用方法として多数のファイルを1つのファイルにまとめたJARファイルで運用します。
JARファイルとは、Java ARchiveの略でZip形式で圧縮しています。
又、JARファイルには、直接Javaアプリケーションを利用できるようなオプションを指定できます。
直接Javaアプリケーションを利用できるJARファイルを、実行可能JARファイルと呼びます。

 又、クラスライブラリでは、classファイルだけをまとめたJARファイルを使う事が多いです。

11−4−2.JARコマンドからの操作

 Javaでは、JARファイルを利用する為に、javacとは違うjarコマンドが提供されています。
jarコマンドの形式は、以下の通りです。
jar [オプション] JARファイル名 [MANIFEST ファイル名] [入力ファイル名]

以下に、主なオプションを示します。
オプション 説明
c 新規JARファイルの作成
t JARファイルの内容をリスト表示
x JARファイルを展開
u JARファイルを更新
f JARファイルのファイル名を指定
v 詳細情報の表示
m MANIFESTファイルの指定

 MANIFESTファイルの記述がありますが、これはJARファイルに重要なファイルです。
MANIFESTファイルには、主にJARファイルの説明を記述します。
実行可能JARファイルを利用するには、ここにmainメソッドを実行するクラスを指定します。
JARファイルにmainメソッドを呼び出すクラスを教えてあげないと、どこのクラスのmainメソッドを実行すれば 良いか分かりませんからね。
では、どのように指定すれば良いかですが、「Main-Class:」を追加し、mainメソッドを読んでほしいクラスを 指定します。
Main-Class: パッケージ名.クラス名
のように、記述します。

実行可能JARファイルを実際に実行する構文を以下に示します。
java -jar JARファイル
これまでに、実行してきたように、プログラムが始まります。

11−4−3.JARファイルの作成と実行可能JARファイルの実行方法

 それでは、実際にサンプルプログラムを試してJARファイルの使い方を学びましょう。

UserCommon.java
package first.java.unit11.common;

// ユーザに関する共通インタフェース
public interface UserCommon {

    // ユーザIDを返す
    public String getUserID();

    // ユーザIDを設定
    public void setUserID(final String userID);
}

UserModel.java
package first.java.unit11.model;

import first.java.unit11.common.UserCommon;

// ユーザモデル
// ユーザに関する共通インタフェースを実装
public class UserModel implements UserCommon {

    // ユーザID
    private String  userID;
    // ユーザ名
    private String  userName;

    // ユーザIDを返す
    public String getUserID() {

        return userID;
    }

    // ユーザIDを設定
    public void setUserID(final String userID) {

        this.userID = userID;
    }

    // ユーザ名を返す
    public String getUserName() {

        return userName;
    }

    // ユーザ名を設定
    public void setUserName(final String userName) {

        this.userName = userName;
    }
}

Sample11_4_1.java
package first.java.unit11.sample;

import first.java.unit11.model.UserModel;

// 単位11 4時間目 サンプル1
public class Sample11_4_1 {

    // ここからスタート
    public static void main(final String[] args) {

        // ユーザ作成
        final UserModel user = new UserModel();
        user.setUserID("java");
        user.setUserName("ジャバ太郎");

        System.out.println("ユーザID:" + user.getUserID());
        System.out.println("ユーザ名:" + user.getUserName());
    }
}
ユーザID:java
ユーザ名:ジャバ太郎

MANIFEST.MF
Manifest-Version: 1.0
Main-Class: first.java.unit11.sample.Sample11_4_1
●フォルダ構成
 JARファイルを作成するには、フォルダ構成を把握する必要があります。
先程のサンプルプログラムを例に示します(以下の様にファイルが設置されているか再度確認しましょう)。
├─Sample11_4_1
│  ├─first
│  │  └─java
│  │      └─unit11
│  │          ├─common
│  │          │      UserCommon.class
│  │          │      UserCommon.java
│  │          │
│  │          ├─model
│  │          │      UserModel.class
│  │          │      UserModel.java
│  │          │
│  │          └─sample
│  │                  Sample11_4_1.class
│  │                  Sample11_4_1.java
│  │
│  └─META-INF
│          MANIFEST.MF

マニフェストファイルは、「META-INF\MANIFEST.MF」となっていますが、必ずしもMETA-INFフォルダの中に、 「MANIFEST.MF」ファイル名である必要はありませんが、渡す相手が不定であったり、決まりが無ければ、 「META-INF\MANIFEST.MF」にすると見る側もマニフェストファイルと分かりやすいので特に変える必要は無いで しょう。
●JARコマンドでJARファイル作成
始める場所はSample11_4_1フォルダの中からです。
そうすると、DドライブにSample11_4_1フォルダがある場合は、以下の様にコマンドプロンプトが表示されます。
D:\Sample11_4_1>
それでは、JARファイルを作成してみましょう。
D:\Sample11_4_1>jar cfvm Sample11_4_1.jar META-INF\MANIFEST.MF first\java\unit11\common\UserCommon.c
lass first\java\unit11\model\UserModel.class first\java\unit11\sample\Sample11_4_1.classs
を入力します。
そうすると、
マニフェストが追加されました。
first/java/unit11/common/UserCommon.class を追加中です。(入 = 213) (出 = 155)(27% 収縮されました)
first/java/unit11/model/UserModel.class を追加中です。(入 = 793) (出 = 381)(51% 収縮されました)
first/java/unit11/sample/Sample11_4_1.class を追加中です。(入 = 1063) (出 = 622)(41% 収縮されました)
が出力され、Sample11_4_1.jarがSample11_4_1フォルダに作成されます。

正しく、JARファイルに収まっているか確認してみましょう。
コマンドと一緒に一気に結果を以下に示します。
D:\Sample11_4_1>jar tf Sample11_4_1.jar
META-INF/
META-INF/MANIFEST.MF
first/java/unit11/common/UserCommon.class
first/java/unit11/model/UserModel.class
first/java/unit11/sample/Sample11_4_1.class

●実行可能JARファイルの実行方法
 せっかく上記のサンプルプログラムでメインを記述しましたので実行可能JARファイルを実行してみましょう 。
java -jar Sample11_4_1.jar

3時間目 パッケージに慣れるに戻る     単位12 例外処理を使おうに進む

単位11 パッケージの導入に戻る

トップページに戻る