複数のファイルを 1 つの Java ARchive (JAR) ファイルに統合します。
jar [ options ] [manifest] destination input-file [input-files]
jar ツールは、複数のファイルを 1 つの Java ARchive ファイルに統合する Java アプリケーションです。jar は、ZIP や ZLIB の圧縮形式を基本とした汎用アーカイブおよび圧縮ツールです。 jar は、主として Java アプレットやアプリケーションを 1 つのアーカイブにパッケージ化するのを容易にするために考案されました。Java アプレットやアプリケーション (.class ファイル、イメージおよびサウンド) のコンポーネントが 1 つのアーカイブに結合されているとき、Java エージェント (ブラウザなど) による 1 回の HTTP 処理だけでダウンロードできるので、各ファイルごとに新しく接続する必要はありません。これにより、ダウンロード時間が大幅に短縮されます。また jar はファイルを圧縮し、さらにダウンロード時間を短くします。作成元の認証を可能にするため、アプレット作成者による署名を、ファイルの個々のエントリに書き込むことができます。jar ツールの構文は、tar
コマンドの構文とほぼ同じです。jar ツールの入力ファイルには、次の 3 種類があります。
- マニフェストファイル (オプション)
- 出力先 jar ファイル
- アーカイブするファイル
標準的な使い方は次のとおりです。
% jar cf myjarfile *.classこの例では、現在のディレクトリのクラスファイルはすべて、myjarfile という名前のファイルに統合されます。 マニフェストファイルは、jar ツールによって自動的に生成され、jar ファイルの中で常に先頭に置かれます。デフォルトでは、META-INF/MANIFEST.INF と名付けられます。 マニフェストファイルには、アーカイブのメタ情報が格納されています。マニフェストファイルにメタ情報がどのようにして格納されるかについての詳細は、「マニフェストフォーマット」を参照してください。新しい jar アーカイブを作成するために jar ツールで使用したいマニフェストファイルがすでにある場合は、m オプションを使用してファイルを指定できます。
% jar cmf myManifestFile myJarFile *.classマニフェストファイルは RFC822 ascii 形式を使用しているため、内容の表示や処理は容易に行えます。
「ファイル」としてディレクトリを指定した場合、そのディレクトリは再帰的に処理されます。
c
- 標準出力に新規または空のアーカイブを作成します。
t
- 標準出力から内容を表形式で一覧表示します。
x
file- すべてのファイルまたは指定のファイルだけを、標準入力から展開します。file の指定を省略した場合、すべてのファイルが展開されます。指定した場合は、指定のファイルだけを展開します。
f
- 2 番目の引数で、処理される jar ファイルを指定します。
c
は、(標準出力の代わりに) 作成される jar ファイルを示します。t
は一覧表示される jar ファイル、x
は展開される jar ファイルを示します。
v
- 標準エラー出力に詳細を出力します。
m
- 指定した既存のマニフェストファイルからマニフェスト情報を取り込みます。たとえば、次のようにして使います。
jar cmf myManifestFile myJarFile *.class
0
- ZIP による圧縮を使用せずに保存だけを行います。
M
- エントリに使用するマニフェストファイルを作成しません。
u
- ファイルを追加するかマニフェストを変更して、既存の JAR ファイルを更新します。たとえば、次のようにして使います。
ファイル foo.class を既存の JAR ファイル foo.jar に追加します。jar -uf foo.jar foo.classfoo.jar のマニフェストをマニフェスト情報とともに更新します。jar umf manifest foo.jar-C
- jar コマンドの実行中にディレクトリを変更します。たとえば、次のようにします。
classes ディレクトリのファイルをすべて foo.jar に追加しますが、classes ディレクトリそのものは追加しません。jar -uf foo.jar -C classes *
特定のディレクトリのファイルをすべて、アーカイブに追加する場合:
$ 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 $jar ツールと 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 $関連項目
JAR ガイド
マニフェストフォーマット