2000年3月29日星期三

Jarコマンド編

◆jarコマンドとは?

J2SE SDKに含まれているコマンドの一つです。複数のファイルやディレクトリを1つのアーカイブファイルに統合するツールです。複数のクラスファイルやリソースファイルなどを1つのファイルにまとめることでライブラリとしての管理や配布が容易にできるようになります。
◆アーカイブファイルとは?
複数のファイルやディレクトリを1つのファイルにまとめたものです。こうすることによって、たくさんのファイルを1つのファイルで配布することができるようになります。また、圧縮することによってファイルのサイズが小さくできるのでインターネットでダウンロードしたりする場合に効率がよくなります。よく見かける「.zip」という拡張子になっているものでおなじみです。
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01

 
◆Javaの実行環境の構築
jarはJ2SE SDKに含まれているコマンドです。アプリケーション編を参考にJavaの実行環境を構築してください。
 
構文の説明
基本的な構文は以下のようになります。

jar [オプション] [マニフェストファイル]
jarアーカイブファイル 入力するファイル1 [入力ファイル2・・]

[ ]で囲まれたものは省略可能です。
■オプションの説明
オプション 説明
-c アーカイブを新規作成する
-t アーカイブの内容を一覧表示する
-x 指定の (またはすべての) ファイルをアーカイブから抽出する
-u 既存アーカイブを更新する
-v 標準出力に詳細な出力を生成する
-f アーカイブファイル名を指定する
-m 指定のマニフェストファイルからマニフェスト情報を取り込む
-O 格納のみ。ZIP 圧縮を使用しない
-M エントリのマニフェストファイルを作成しない
-i 指定の jar ファイルのインデックス情報を生成する
-C 指定のディレクトリに変更し、以下のファイルを取り込む
■マニフェストファイルとは
jarアーカイブファイルに含まれているファイルの情報を記述するファイルのことです。jarアーカイブファイルの中に入っています。META-INFディレクトリの下のMANIFEST.MFという名前のファイルです。
 
jarアーカイブファイルの作成
jarアーカイブファイルを新規に作成する例です。新規に作成するには「cf」オプションをつけてその後に生成するjarアーカイブファイル名を指定します。標準出力に詳細な情報を表示するには「v」オプションをつけます。
jar cf 生成するjarアーカイブファイル名 アーカイブに入れるクラスやリソースファイル
 
■使用例
(例1) ファイルを指定
HelloWorld1.classを入れてmylib.jarファイルを作成する場合
jar cf mylib.jar HelloWorld1.class
javahello\HelloWorld3.classを入れてmylib.jarファイルを作成する場合
jar cf mylib.jar javahello\HelloWorld3.class
(例2) ファイルを指定(複数)
jar cf mylib.jar HelloWorld1.class
HelloWorld2.class
(例3) ファイルを指定(ワイルドカードを使用)
jar cf mylib.jar *.class
(例4) ディレクトリを指定
javahelloというディレクトリの中身をjarファイルに入れます。
jar cf mylib.jar javahello
*.classの他に、imageというディレクトリの中身もjarファイルに入れます。
jar cf mylib.jar *.class
image
*.classの他に、imageとaudioというディレクトリの中身もjarファイルに入れます。
jar cf mylib.jar *.class
image audio
(例5) 詳細情報を画面に表示
C:\JavaHello\jar>jar
cvf mylib.jar *.class

マニフェストが追加されました。

HelloWorld1.class を追加中です。(入 = 427) (出 = 288)(32% 収縮されました)

HelloWorld2.class を追加中です。(入 = 427) (出 = 288)(32% 収縮されました)

C:\JavaHello\jar>

 
 
jarアーカイブファイルの中身を見る
jarアーカイブファイルの中身を見る例です。jarアーカイブファイルの中身を見るには「tf」オプションをつけてその後にjarアーカイブファイル名を指定します。標準出力に詳細な情報を表示するには「v」オプションをつけます。
jar tf 中身を見たいjarアーカイブファイル名
 
■使用例
(例1)
C:\JavaHello\jar>jar
tf mylib.jar

META-INF/

META-INF/MANIFEST.MF

HelloWorld1.class

HelloWorld2.class

C:\JavaHello\jar>

(例2) 詳細情報を画面に表示
C:\JavaHello\jar>jar
tvf mylib.jar

0 Mon Feb 03 22:34:28 JST 2003 META-INF/

71 Mon Feb 03 22:34:28 JST 2003 META-INF/MANIFEST.MF

427 Mon Feb 03 22:04:42 JST 2003 HelloWorld1.class

427 Mon Feb 03 22:04:42 JST 2003 HelloWorld2.class

C:\JavaHello\jar>

 
 
jarアーカイブファイルの中身を取り出す
jarアーカイブファイル中身を取り出す例です。jarアーカイブファイルの中身を取り出すには「xf」オプションをつけてその後にjarアーカイブファイル名を指定します。標準出力に詳細な情報を表示するには「v」オプションをつけます。
jar xf 中身を取り出したいjarアーカイブファイル名
 
■使用例
(例1)
jar xf mylib.jar
(例2) 詳細情報を画面に表示
C:\JavaHello\jar>jar
xvf mylib.jar

META-INF/ が作成されました。

META-INF/MANIFEST.MF が抽出されました。

HelloWorld1.class が抽出されました。

HelloWorld2.class が抽出されました。

C:\JavaHello\jar>

META-INF\MANIFEST.MFファイルも取り出されたので中身を見てみます。
MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.4.1_01 (Sun Microsystems Inc.)
MANIFEST.MFファイルは「属性名: 値」という形式で書かれています。
 
 
jarアーカイブファイルに新たにファイルを追加する
jarアーカイブファイルに新たにファイルを追加する例です。jarアーカイブファイルに新たにファイルを追加するには「uf」オプションをつけてその後にjarアーカイブファイル名を指定します。標準出力に詳細な情報を表示するには「v」オプションをつけます。
jar uf jarアーカイブファイル名 追加するクラスやリソースファイル
 
■使用例
(例1)
jar uf mylib.jar javahello\HelloWorld3.class
(例2) 詳細情報を画面に表示

 
C:\JavaHello\jar>jar
uvf mylib.jar javahello\HelloWorld3.class

javahello/HelloWorld3.class を追加中です。(入 = 427) (出 = 288)(32%
収縮されました)

C:\JavaHello\jar>

        

没有评论:

发表评论