jar - Javaアーカイブツール
複数のファイルを 1 つの Java アーカイブ (JAR) ファイルに統合します。
形式
jar [ options ] [manifest] destination input-file [input-files]
機能説明
jar ツールは、複数のファイルを 1 つの JAR アーカイブファイルに統合する
java アプリケーションです。jar は、ZIP や ZLIB
の圧縮形式を基本とした汎用アーカイブおよび圧縮ツールです。 jar は、主に
java アプレットやアプリケーションを 1 つのアーカイブにパッケージ化するのを容易にするために考案されました。java
アプレットやアプリケーションのコンポーネント (.class ファイル、イメージおよびサウンド)
が 1 つのアーカイブに統合されることで、java エージェント (ブラウザなど)が1回の HTTP
処理だけでダウンロードできます。このことによりダウンロード時間が驚くほど短縮されます。
また jar はファイルを圧縮するため、さらにダウンロード時間を短くします。作成元の認証を可能にするために、アプレット作成者による署名を、ファイルの個々のエントリに書き込むこともできます。jar
ツールの構文は、UNIX の tar コマンドの構文とほぼ同じです。
jar ツールの 3 種類の入力ファイル:
- manifest ファイル (オプション)
- 出力先(destination)jar ファイル
- アーカイブするファイル(input-files)
標準的な使い方:
% jar cf myjarfile *.class
この例では、カレントのディレクトリのクラスファイルはすべて、"myjarfile"
という名前のファイルにアーカイブされます。 manifest ファイルは、jar
ツールによって自動的に生成され、jar ファイルの中で常に最初に置かれます。デフォルトでは、META-INF/MANIFEST.INF
と名付けられます。 manifest ファイルには、アーカイブのメタ情報が格納されています。
manifest ファイルにメタ情報がどのようにして格納されるかについての詳細は、manifest
仕様 を参照してください。
既存の manifest ファイルを使用して、新しい jar アーカイブを作成する場合、-m
オプションで指定することができます。
% jar cmf myManifestFile myJarFile *.class
jar アーカイブにファイルを追加する場合、ファイルの他に MD5 や
SHA ハッシュを格納します。ハッシュは manifest ファイルに格納されます。 manifest ファイルは
RFC822 の ascii 形式を使用しているため、内容の表示や編集を容易に行えます。
OPTIONS
c
- 標準出力に新規または空のアーカイブを作成します。
t
- 標準出力から内容のリストを表示します。
x file
- すべてのファイルまたは指定のファイルを、標準入力から展開します。file の指定を省略した場合、すべてのファイルが展開されます。指定した場合は、指定したファイルだけ展開します。
f jarfile
c , t , x と共に使われる引数で、処理される
jar ファイルを指定します。c reation オプションの場合、(標準出力の代わりに)
jarfile ファイルが作成されます。t able または ex tractでは、jarfile
ファイルをリスト、または展開します。
v
- 標準エラーに詳細を出力します。
m
- すでに存在しているmanifest ファイルを使用してメタ情報を付加します。
0
- 格納のみで、ZIP圧縮を行わない。
M
- manifest ファイルを作成しない。
"input-files" のいずれかがディレクトリである場合、そのディレクトリは再帰的に処理されます。
例
特定のディレクトリのファイルをすべて、アーカイブに追加する場合:
$ ls
0.au 3.au 6.au 9.au at_work.gif
1.au 4.au 7.au Animator.class monkey.jpg
2.au 5.au 8.au Wave.class spacemusic.au
$ jar cvf bundle.jar *
adding: 0.au
adding: 1.au
adding: 2.au
adding: 3.au
adding: 4.au
adding: 5.au
adding: 6.au
adding: 7.au
adding: 8.au
adding: 9.au
adding: Animator.class
adding: Wave.class
adding: at_work.gif
adding: monkey.jpg
adding: spacemusic.au
$
html ディレクトリの中に、イメージ、オーディオファイルおよびクラス用のサブディレクトリがすでにある場合、1
つの jar ファイルの中に各ディレクトリをまとめることができます:
$ ls
audio classes images
$ jar cvf bundle.jar audio classes images
adding: audio/1.au
adding: audio/2.au
adding: audio/3.au
adding: audio/spacemusic.au
adding: classes/Animator.class
adding: classes/Wave.class
adding: images/monkey.jpg
adding: images/at_work.gif
$ ls -l
total 142
drwxr-xr-x 2 brown green 512 Aug 1 22:33 audio
-rw-r--r-- 1 brown green 68677 Aug 1 22:36 bundle.jar
drwxr-xr-x 2 brown green 512 Aug 1 22:26 classes
drwxr-xr-x 2 brown green 512 Aug 1 22:25 images
$
"t" オプションにより、jar ファイル中のエントリ名を見ることができます:
$ ls
audio bundle.jar classes images
$ jar tf bundle.jar
META-INF/MANIFEST.MF
audio/1.au
audio/2.au
audio/3.au
audio/spacemusic.au
classes/Animator.class
classes/Wave.class
images/monkey.jpg
images/at_work.gif
$
"v" オプションを使用して詳細を列挙すると、サイズや最新の更新日など、アーカイブファイルについての情報がさらに増えます:
$ jar tvf bundle.jar
145 Thu Aug 01 22:27:00 PDT 1996 META-INF/MANIFEST.MF
946 Thu Aug 01 22:24:22 PDT 1996 audio/1.au
1039 Thu Aug 01 22:24:22 PDT 1996 audio/2.au
993 Thu Aug 01 22:24:22 PDT 1996 audio/3.au
48072 Thu Aug 01 22:24:23 PDT 1996 audio/spacemusic.au
16711 Thu Aug 01 22:25:50 PDT 1996 classes/Animator.class
3368 Thu Aug 01 22:26:02 PDT 1996 classes/Wave.class
12809 Thu Aug 01 22:24:48 PDT 1996 images/monkey.jpg
527 Thu Aug 01 22:25:20 PDT 1996 images/at_work.gif
$
|