1 '\" t
   2 .\"
   3 .\" Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
   4 .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   5 .\"
   6 .\" This code is free software; you can redistribute it and/or modify it
   7 .\" under the terms of the GNU General Public License version 2 only, as
   8 .\" published by the Free Software Foundation.
   9 .\"
  10 .\" This code is distributed in the hope that it will be useful, but WITHOUT
  11 .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12 .\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13 .\" version 2 for more details (a copy is included in the LICENSE file that
  14 .\" accompanied this code).
  15 .\"
  16 .\" You should have received a copy of the GNU General Public License version
  17 .\" 2 along with this work; if not, write to the Free Software Foundation,
  18 .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  19 .\"
  20 .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  21 .\" or visit www.oracle.com if you need additional information or have any
  22 .\" questions.
  23 .\" ` 
  24 .TH jar 1 "05 Jul 2012"
  25 .SH "名前"
  26 jar \- Java アーカイブツール
  27 .LP
  28 \f3jar\fP は複数のファイルを 1 つの Java Archive (JAR) ファイルに結合します。
  29 .\" 
  30 .\"  This document was created by saving an HTML file as text
  31 .\"  from the JavaSoft web site:
  32 .\" 
  33 .\" http://java.sun.com/j2se/1.5/docs/tooldocs/tools.html
  34 .\" 
  35 .\"  and adding appropriate troff macros.  Because the JavaSoft web site 
  36 .\"  man pages can change without notice, it may be helpful to diff
  37 .\"  files to identify changes other than new functionality. 
  38 .\" 
  39 .SH "形式"
  40 .LP
  41 
  42 .LP
  43 .TP 3
  44 jar ファイルの作成 
  45 \f4jar c\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP 
  46 .TP 3
  47 jar ファイルの更新 
  48 \f4jar u\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP 
  49 .TP 3
  50 jar ファイルの抽出 
  51 \f4jar x\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP 
  52 .TP 3
  53 jar ファイルの内容の一覧を作成
  54 \f4jar t\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP 
  55 .TP 3
  56 jar ファイルにインデックスを追加
  57 \f4jar i\fP \f2jarfile\fP \f2[\-J\fP\f2option\fP\f2]\fP 
  58 .LP
  59 .LP
  60 パラメータ
  61 .LP
  62 .RS 3
  63 
  64 .LP
  65 .TP 3
  66 cuxtiv0Mmfe 
  67 .I jar 
  68 コマンドを制御するオプション。
  69 .TP 3
  70  jarfile 
  71 作成 (c)、更新 (u)、抽出 (x)、または閲覧される内容の一覧を作成 (t) する
  72 jar ファイルです。
  73 .I \-f 
  74 オプションとファイル名
  75 .I jarfile 
  76 は対になっています。
  77 使用する場合は、両方を一緒に使用します。
  78 .I f 
  79 および 
  80 .I jarfile 
  81 を省略すると、標準入力から「jar ファイル」が
  82 使用されたり (x および t の場合)、標準出力にこの「jar ファイル」が
  83 送信されたりします (c および u の場合)。
  84 .TP 3
  85 
  86 inputfiles 
  87 .I jar ファイル
  88 に結合 (c および u の場合)、または 
  89 .I jar ファイル
  90 から抽出 (x の場合) または一覧表示 (t の場合) されるファイル
  91 またはディレクトリ。空白文字で区切ります。
  92 すべてのディレクトリは再帰的に処理されます。
  93 オプション 0 (ゼロ) が使用されない場合は、ファイルが圧縮されます。
  94 .TP 3
  95  manifest 
  96 jar ファイルの MANIFEST.MF に含めようとする名前:値ペアが含まれている
  97 既存の manifest ファイルです。
  98 .I \-m 
  99 オプションと
 100 .I manifest 
 101 のファイル名は対になっています。
 102 使用する場合は、両方を一緒に使用します。
 103 文字 
 104 .B m 
 105 、 
 106 .B f 
 107 、および 
 108 .B e 
 109 の出現順序は、
 110 .I manifest 
 111 、 
 112 .I jarfile 
 113 、および 
 114 .I entrypoint 
 115 の出現順序と一致する必要があります。
 116 .TP 3
 117 
 118 entrypoint 
 119 実行可能 JAR ファイル内にバンドルされたスタンドアロンアプリケーションのアプリケーションエントリポイントとして設定するクラスの名前。
 120 .I \-e
 121 オプションと entrypoint は対になっています。どちらかを指定する場合は両方とも指定する必要があります。文字 
 122 .I m
 123 、
 124 .I f
 125 、
 126 .I e
 127 の出現順序は 
 128 .I manifest
 129 、
 130 .I jarfile
 131 、
 132 .I entrypoint
 133 の出現順序と一致する必要があります。 
 134 .TP 3
 135 \-C\ dir 
 136 後続の入力ファイル引数の処理中、
 137 ディレクトリを 
 138 .I dir 
 139 に一時的に変更します。
 140 複数の 
 141 .I \-C " dir" 
 142 入力ファイルのセットを使用できます。
 143 .TP 3
 144 \-Joption 
 145 Java Runtime Environment に渡されるオプション
 146 (
 147 .I \-J 
 148 と
 149 .I option 
 150 の間には空白文字を入れないでください)。
 151 .SH "機能説明"
 152 .IX "Java archive tool" "" "Java archive tool \(em \fLjar\fP"
 153 .IX "jar" "" "\fLjar\fP \(em Java archive tool"
 154 .B jar
 155 ツールは
 156 Java 
 157 アプリケーションの
 158 1
 159 つで、複数個のファイルを
 160 1
 161 個の
 162 JAR
 163 アーカイブファイルに統合します。また、
 164 jar は汎用的なアーカイブ作成用
 165 および圧縮用のツールでもあり、圧縮は
 166 .SM ZIP
 167 または
 168 .I ZLIB
 169 .fi
 170  (http://www.gzip.org/zlib/) 
 171 形式で行います。
 172 ただし
 173 .B jar
 174 ツールの主な目的は、いくつかの
 175 Java
 176 アプレットやアプリケーションを
 177 1
 178 個のアーカイブに統合することです。
 179 アプレットやアプリケーションのコンポーネント、たとえば
 180 クラスファイル、イメージ、サウンドなどを単一のアーカイブに
 181 まとめると、ブラウザのような
 182 Java
 183 エージェントにダウンロードするときに、一度の
 184 HTTP
 185 トランザクションで済みます。コンポーネントごとに
 186 新たに接続する必要がありません。
 187 これによりダウンロード時間が大幅に短縮できます。
 188 また
 189 .B jar
 190 はファイルの圧縮も行うので、ダウンロードがより高速になります。
 191 さらに、ファイル中の個々のエントリに対してアプレットの作成者が
 192 署名できるので、作成元を明確化できます。
 193 .B jar
 194 ツールの構文は、
 195 .I tar
 196 コマンドの構文とほぼ同一です。
 197 .B jar
 198 アーカイブは、圧縮されているかどうかにかかわらず、
 199 クラスパス
 200 .fi
 201  (http://java.sun.com/javase/6/docs/technotes/tools/solaris/classpath.html) 
 202 エントリとして使用できます。
 203 .LP
 204 複数のファイルを jar ファイルに統合する標準的な使い方は次のとおりです。
 205 .LP
 206 .RS
 207 .ft 3
 208 .nf
 209 % jar cf myFile.jar *.class
 210 .fi
 211 .ft 1
 212 .RE
 213 .LP
 214 この例では、現在のディレクトリ中のすべてのクラスファイルが
 215 .I myFile.jar
 216 という名前のファイルに置かれます。
 217 jar ツールは自動的に、
 218 .I META\-INF/MANIFEST.MF
 219 という名前のマニフェストファイルエントリを生成します。これは常に、JAR ファイルの最初のエントリになります。マニフェストファイルは、アーカイブに関するメタ情報を宣言し、そのデータを
 220 .I name : value
 221 ペアとして格納します。jar ツールがマニフェストファイル内にメタ情報を格納する方法の詳細については、
 222 .fi
 223 http://docs.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest
 224 の
 225 .na
 226 「JAR file specification」を参照してください。 
 227 .LP
 228 既存のマニフェストファイル内に格納された 
 229 .I name : value
 230 ペアを JAR ファイルに含める必要がある場合には、そのファイルを次のように \f2\-m\fP オプションを使って指定します。
 231 .LP
 232 .RS 3
 233 
 234 .LP
 235 .nf
 236 \f3
 237 .fl
 238 % jar cmf myManifestFile myFile.jar *.class
 239 .fl
 240 \fP
 241 .fi
 242 .RE
 243 
 244 .LP
 245 既存のマニフェストファイルは改行文字で終わっている必要があります。\  マニフェストファイルが改行文字で終わっていない場合、\f3jar\fP はその最後の行を解析しません。
 246 .br
 247 
 248 .LP
 249 .br
 250 
 251 .LP
 252 \f3注:\ \fP コマンド行に 
 253 .I cmf
 254 ではなく 
 255 .I cfm
 256 が指定された jar コマンド (m と \-f オプションの順番を逆にする) の場合、\f3jar\fP コマンド行にまず jar アーカイブの名前を指定し、続いてマニフェストファイルの名前を指定する必要があります。次に例を示します。 
 257 .LP
 258 .RS 5
 259 .B % jar cfm myFile.jar myManifestFile *.class
 260 .RE
 261 .LP
 262 manifest は RFC822 
 263 .SM ASCII 
 264 形式に基づいたテキスト形式を使用するため、manifest ファイルの内容は
 265 簡単に表示および処理できます。
 266 .LP
 267 jar ファイルからファイルを抽出する場合は、
 268 .I x 
 269 を使用します。次に例を示します。
 270 .LP
 271 .RS 5
 272 % jar xf myFile.jar
 273 .RE
 274 .LP
 275 jar ファイルから個別のファイルを抽出する場合は、
 276 そのファイル名を指定します。
 277 .LP
 278 .RS 5
 279 % jar xf myFile.jar foo bar
 280 .RE
 281 .LP
 282 JDK のバージョン 1.3 から、jar ユーティリティで 
 283 .fi
 284 http://docs.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Index
 285 の「
 286 .I JarIndex
 287 」をサポートするようになりました。
 288 これにより、
 289 アプリケーションのクラスローダは、jar ファイルから
 290 クラスをより高速に読み込めるようになりました。
 291 アプリケーションまたはアプレットが複数の jar ファイルに
 292 バンドルされている場合、必要な jar ファイルだけがダウン
 293 ロードされて開かれ、クラスが読み込まれます。
 294 このパフォーマンスの最適化は、
 295 .I jar
 296 を 
 297 .I \-i
 298 オプションを使用して実行すると有効になります。
 299 指定した
 300 メインの jar ファイルおよびそのファイルが依存している
 301 すべての jar ファイルのパッケージ位置情報が生成されます。
 302 これらの情報は、メイン jar ファイルの manifest の 
 303 .I Class-Path 
 304 属性で
 305 指定する必要があります。
 306 .LP
 307 .RS 5
 308 % jar i main.jar
 309 .RE
 310 .LP
 311 この例では、
 312 .I INDEX.LIST 
 313 ファイルが 
 314 .I main.jar 
 315 の
 316 .I META-INF ディレクトリに追加されます。
 317 アプリケーションのクラスローダでは、このファイルに格納された情報を
 318 使用して、クラスのロードを高速化します。
 319 インデックスファイルに位置情報を格納する方法の詳細は、
 320 「JarIndex 仕様」を参照してください。
 321 .br
 322 .br
 323 ディレクトリをコピーするには、まず 
 324 .I dir1
 325 内のファイルを圧縮して標準出力に出力し、続いて標準入力から 
 326 .I dir2
 327 に抽出します (両方の 
 328 .I jar
 329 コマンドから
 330 .I \-f
 331 オプションを省く)。次に例を示します。
 332 .LP
 333 .RS 5
 334 % (cd dir1; jar c .) | (cd dir2; jar x)
 335 .RE
 336 .LP
 337 .I jar
 338 を使って JAR ファイルや JAR ファイルマニフェストを操作するコマンドサンプルを確認するには、「例」を参照してください。また、
 339 .fi
 340 http://java.sun.com/docs/books/tutorial/jar
 341 の
 342 .na
 343 「Java Tutorial」の JAR コースも参照してください。
 344 .SH "オプション"
 345 .if t .TP 10
 346 .if n .TP 5
 347 .B c
 348 新規のアーカイブファイルを 
 349 .I jarfile 
 350 という名前 (
 351 .I f 
 352 を指定した場合)、または標準出力上に (
 353 .I f 
 354 と 
 355 .I jarfile 
 356 を省略した場合) 作成します。
 357 アーカイブには入力ファイルで指定したファイルおよびディレクトリが追加されます。
 358 .if t .TP 10
 359 .if n .TP 5
 360 .B u
 361 既存の 
 362 .I jarfile 
 363 (
 364 .I f 
 365 を指定した場合) を更新します。
 366 このとき、この 
 367 .I jarfile 
 368 には入力ファイルで指定されたファイルおよびディレクトリが追加されます。以下に例を示します。
 369 .LP
 370 .RS 5
 371 % jar uf foo.jar foo.class
 372 .RE
 373 .LP
 374 この例では、ファイル 
 375 .I foo.class 
 376 が既存の jar ファイル 
 377 .I foo.jar 
 378 に追加されます。
 379 .I u 
 380 オプションでは、マニフェストのエントリを更新することもできます。以下に例を示します。
 381 .LP
 382 .RS 5
 383 % jar umf manifest foo.jar
 384 .RE
 385 .LP
 386 .I foo.jar 
 387 マニフェストをマニフェスト内の名前:値ペアで更新します。
 388 .if t .TP 10
 389 .if n .TP 5
 390 .B x
 391 ファイルおよびディレクトリを 
 392 .I jarfile 
 393 (
 394 .I f 
 395 を指定した場合)、
 396 または標準入力 (
 397 .I f 
 398 と 
 399 .I jarfile 
 400 を省略した場合) から抽出します。
 401 入力ファイルを指定した場合、その入力ファイルで指定されたファイルおよびディレクトリだけが
 402 抽出されます。指定しない場合は、すべてのファイルおよびディレクトリが抽出されます。
 403 抽出されたファイルの日時は、アーカイブ内で設定されたものです。
 404 .if t .TP 10
 405 .if n .TP 5
 406 .B t
 407 .I jarfile 
 408 (
 409 .I f 
 410 を指定した場合)、または標準入力 (
 411 .I f 
 412 と 
 413 .I jarfile 
 414 を省略した場合) から内容をリストします。入力ファイルを指定した場合、
 415 その入力ファイルで指定されたファイルおよびディレクトリだけが
 416 リストされます。指定しない場合は、すべてのファイルおよびディレクトリがリストされます。
 417 .if t .TP 10
 418 .if n .TP 5
 419 .B i
 420 指定された 
 421 .I jarfile 
 422 および関連づけられている jar ファイルの
 423 インデックス情報を生成します。次に例を示します。 
 424 .LP
 425 .RS 5
 426 % jar i foo.jar
 427 .RE
 428 .LP
 429 .I foo.jar
 430 に 
 431 .I INDEX.LIST 
 432 ファイルが生成されます。
 433 このファイルには、
 434 .I foo.jar 
 435 の各パッケージおよび 
 436 .I foo.jar 
 437 の 
 438 .I Class-Path 
 439 属性に指定されているすべての jar ファイルの
 440 位置情報が書き込まれています。
 441 インデックスの例を参照してください。
 442 .if t .TP 10
 443 .if n .TP 5
 444 .B f
 445 作成 (c)、更新 (u)、抽出 (x)、インデックス作成(i)、
 446 または表示 (t) する 
 447 .I jarfile 
 448 を指定します。
 449 .I \-f 
 450 オプションと 
 451 .I jarfile 
 452 のファイル名は対になっています。
 453 使用する場合は、両方を一緒に使用します。
 454 .I f 
 455 と 
 456 .I jarfile 
 457 を省略すると、標準入力から jar ファイル名が
 458 使用されたり (x および t の場合)、標準出力に jar ファイルが
 459 送信されたりします (c および u の場合)。
 460 .if t .TP 10
 461 .if n .TP 5
 462 .B v
 463 標準出力に詳細な出力を生成します。次に例を示します。
 464 .if t .TP 10
 465 .if n .TP 5
 466 .B 0
 467 ゼロ。ZIP 圧縮を使用せずに格納します。
 468 .if t .TP 10
 469 .if n .TP 5
 470 .B M
 471 manifest ファイルエントリを作成しません (c および u の場合)。または
 472 すでに存在する manifest ファイルエントリを削除します (u の場合)。 
 473 .if t .TP 10
 474 .if n .TP 5
 475 .B m
 476 指定したマニフェストファイル 
 477 .I manifest 
 478 から
 479 名前:値属性をファイル
 480 .I META-INF/MANIFEST.MF 
 481 に取り込みます。
 482 すでに同じ名前で存在しない限り、
 483 .I jar
 484 はその名前:値ペアを追加します。同じ名前で存在する場合は、
 485 jar
 486 はその値を更新します。
 487 .LP
 488 コマンド行では、文字 
 489 .B m 
 490 と 
 491 .B f 
 492 は、
 493 .I manifest 
 494 と 
 495 .I jarfile
 496 が出現するのと
 497 同じ順序で使用します。次に例を示します。
 498 .LP
 499 .RS 5
 500 % jar cmf myManifestFile myFile.jar *.class
 501 .RE
 502 .LP
 503 manifest ファイルには、デフォルトのマニフェストに含まれていない、
 504 専用の名前:値属性ペアを追加できます。
 505 たとえば、
 506 ベンダー情報、バージョン情報、パッケージシーリング、
 507 または JAR にバンドルされたアプリケーションを実行するための属性を
 508 追加できます。
 509 .B -m 
 510 オプションの使用例については、「Java Tutorial」
 511 .fi
 512 http://java.sun.com/docs/books/tutorial/jar/
 513 にある
 514 .na
 515 「
 516 .I JAR Files
 517 」コースを参照してください。
 518 .TP 3
 519 e 
 520 実行可能 JAR ファイル内にバンドルされたスタンドアロンアプリケーションのアプリケーションエントリポイントとして、
 521 .I entrypoint
 522 を設定します。このオプションを使用すると、マニフェストファイル内の 
 523 .I Main\-Class
 524 属性値が作成または上書きされます。このオプションは、JAR ファイルの作成中または更新中に使用できます。このオプションを使えば、マニフェストファイルを編集または作成することなしに、アプリケーションのエントリポイントを指定できます。
 525 .br
 526 .br
 527 たとえば、次のコマンドは 
 528 .I Main.jar
 529 を作成しますが、その際、マニフェストファイル内の 
 530 .I Main\-Class
 531 属性値は 
 532 .I Main
 533 に設定されます。 
 534 .RS 3
 535 
 536 .LP
 537 .nf
 538 \f3
 539 .fl
 540 jar cfe Main.jar Main Main.class
 541 .fl
 542 \fP
 543 .fi
 544 .RE
 545 .LP
 546 次のコマンドを実行すると java ランタイムから直接このアプリケーションを起動できます。 
 547 .RS 3
 548 
 549 .LP
 550 .nf
 551 \f3
 552 .fl
 553 java \-jar Main.jar
 554 .fl
 555 \fP
 556 .fi
 557 .RE
 558 エントリポイントのクラス名が特定のパッケージ内に存在している場合、エントリポイントの区切り文字としてドット (「.」) またはスラッシュ (「/」) を使用できます。たとえば、
 559 .I Main.class
 560 が 
 561 .I foo
 562 という名前のパッケージ内に存在している場合、次のようにしてエントリポイントを指定できます。 
 563 .RS 3
 564 
 565 .LP
 566 .nf
 567 \f3
 568 .fl
 569 jar \-cfe Main.jar foo/Main foo/Main.class
 570 .fl
 571 \fP
 572 .fi
 573 .RE
 574 または 
 575 .RS 3
 576 
 577 .LP
 578 .nf
 579 \f3
 580 .fl
 581 jar \-cfe Main.jar foo.Main foo/Main.class
 582 .fl
 583 \fP
 584 .fi
 585 .RE
 586 \f3注:\ \fP 
 587 .I \-m
 588 オプションと 
 589 .I \-e
 590 オプションの両方を同時に指定する場合、指定されたマニフェストにも 
 591 .I Main\-Class
 592 属性が含まれていると、
 593 .I Main.class
 594 の指定があいまいになってエラーが発生し、JAR の作成または更新処理が異常終了します。 
 595 .if t .TP 10
 596 .if n .TP 5
 597 .B \-C \ dir 
 598 .B jar 
 599 コマンドの実行中に一時的にディレクトリを変更します (
 600 .I cd " dir"
 601 )。
 602 このとき、後続の入力ファイル引数が処理されます。
 603 この動作は、UNIX の 
 604 .I tar 
 605 ユーティリティの 
 606 .I \-C 
 607 オプションと
 608 同様の動作になります。
 609 たとえば、次のコマンドは、
 610 .I classes 
 611 ディレクトリに移動し、そのディレクトリから 
 612 .I bar.classes 
 613 を
 614 .I foo.jar 
 615 に追加します。
 616 .RS 3
 617 
 618 .LP
 619 .nf
 620 \f3
 621 .fl
 622 jar uf foo.jar \-C classes bar.class
 623 .fl
 624 \fP
 625 .fi
 626 .RE
 627 次のコマンドでは、
 628 .I classes 
 629 ディレクトリに移動し、
 630 .I classes 
 631 ディレクトリ内のすべてのファイルを
 632 .I foo.jar 
 633 に追加します (jar ファイルには classes ディレクトリを作成しません)。
 634 次に元のディレクトリに戻ってから、
 635 .I bin 
 636 ディレクトリに移動し、
 637 .I xyz.class 
 638 を 
 639 .I foo.jar 
 640 に追加します。
 641 .RS 3
 642 
 643 .LP
 644 .nf
 645 \f3
 646 .fl
 647 jar uf foo.jar \-C classes . \-C bin xyz.class
 648 .fl
 649 \fP
 650 .fi
 651 .RE
 652 .I classes
 653 にファイル 
 654 .I bar1
 655 および 
 656 .I bar2
 657 がある場合、
 658 .I jar tf foo.jar
 659 を実行すると、jar ファイルの内容が次のように表示されます。
 660 .LP
 661 .if t .RS 15
 662 .if n .RS 8
 663 .ft 3
 664 .nf
 665 META-INF/
 666 META-INF/MANIFEST.MF
 667 bar1
 668 bar2
 669 xyz.class
 670 .fi
 671 .ft 1
 672 .RE
 673 .if t .TP 10
 674 .if n .TP 5
 675 .B \-Joption
 676 .I option
 677 を Java Runtime Environment に渡します。
 678 ここで、
 679 .I option
 680 は、Java アプリケーション起動プログラムのマニュアルページ
 681 .fi
 682  (http://java.sun.com/javase/6/docs/technotes/tools/solaris/java.html#options) 
 683 で説明されているオプションの 1 つです。
 684 たとえば
 685 .B \-J-Xms48m
 686 は、最大メモリを 48M バイトに設定します。
 687 .I \-J
 688 が基本にする仮想マシンにオプションを渡すことは、共通の規約です。
 689 .SH "コマンド行引数ファイル"
 690 .B jar 
 691 コマンド行を短くまたは簡単にするために、
 692 .I jar 
 693 コマンドの引数 (
 694 .I \-J 
 695 オプションを除く) を含むファイルを 1 つ以上指定できます。
 696 これにより、任意の長さの 
 697 .B jar 
 698 コマンドを作成でき、
 699 オペレーティングシステムによるコマンド行の制限を
 700 回避できます。
 701 .LP
 702 引数ファイルには、オプションとファイル名を含めることができます。
 703 引数ファイル内の引数は空白文字区切りまたは改行区切りにします。
 704 引数ファイル内のファイル名は、引数ファイルの位置に対してではなく、
 705 現在のディレクトリに対して相対的に指定します。
 706 通常はオペレーティングシステムシェルによって展開されるワイルドカード (*) は
 707 展開されません。ファイルを再帰的に解釈するための @ 文字は使用できません。
 708 .I \-J 
 709 オプションは、起動プログラムに渡されるため、サポートされていません。
 710 起動プログラムでは引数ファイルを使用できないためです。
 711 .LP
 712 .I jar 
 713 の実行時、各引数ファイルのパスおよび名前の先頭に @ 文字を付けて渡します。
 714 .I jar 
 715 で先頭に文字 @ の付いた引数が出現するたびに、
 716 そのファイルの内容が引数リストに展開されます。
 717 .br
 718 .br
 719 次の例では、
 720 .I find
 721 コマンドから出力されたファイル名を 
 722 .I classes.list
 723 内に格納しています。 
 724 .LP
 725 .RS 5
 726 % find . -name '*.class' -print > classes.list
 727 .RE
 728 .LP
 729 その後、引数ファイル構文を使って
 730 .I jar
 731 にリストを渡すと、
 732 .I Classes.list
 733 で 
 734 .I jar
 735 コマンドを実行できます。
 736 .LP
 737 .RS 5
 738 % jar cf my.jar @classes.list
 739 .RE
 740 .LP
 741 引数ファイルはパスを指定できますが、相対パスが記述された引数ファイル内の
 742 すべてのファイル名は、渡されたパスに対して相対的ではなく、
 743 現在の作業ディレクトリに相対的となります。次に例を示します。
 744 .LP
 745 .RS 5
 746 % jar @path1/classes.list
 747 .RE
 748 .SH "使用例"
 749 あるディレクトリ中のファイルをすべてアーカイブに追加する例を示します 
 750 (アーカイブがすでに存在する場合は、内容が上書きされます)。
 751 詳細を列挙すると (
 752 .I \-v
 753 オプションを使用)、
 754 サイズや最終更新日など、
 755 アーカイブ内のファイルに関して詳しい情報が得られます。
 756 .RS 
 757 \f3
 758 .nf
 759 % ls
 760 1.au          Animator.class    monkey.jpg
 761 2.au          Wave.class        spacemusic.au
 762 3.au          at_work.gif
 763 .LP
 764 % jar cvf bundle.jar *
 765 added manifest
 766 adding: 1.au(in = 2324) (out= 67)(deflated 97%)
 767 adding: 2.au(in = 6970) (out= 90)(deflated 98%)
 768 adding: 3.au(in = 11616) (out= 108)(deflated 99%)
 769 adding: Animator.class(in = 2266) (out= 66)(deflated 97%)
 770 adding: Wave.class(in = 3778) (out= 81)(deflated 97%)
 771 adding: at_work.gif(in = 6621) (out= 89)(deflated 98%)
 772 adding: monkey.jpg(in = 7667) (out= 91)(deflated 98%)
 773 adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%)
 774 \f1
 775 .fi
 776 .RE
 777 イメージ、オーディオファイル、およびクラス用のサブディレクトリが
 778 すでに存在する場合、単一の 
 779 .B jar 
 780 ファイルに結合できます。
 781 .RS 
 782 \f3
 783 .nf
 784 % ls -F
 785 audio/ classes/ images/
 786 
 787 % jar cvf bundle.jar audio classes images
 788 added manifest
 789 adding: audio/(in = 0) (out= 0)(stored 0%)
 790 adding: audio/1.au(in = 2324) (out= 67)(deflated 97%)
 791 adding: audio/2.au(in = 6970) (out= 90)(deflated 98%)
 792 adding: audio/3.au(in = 11616) (out= 108)(deflated 99%)
 793 adding: audio/spacemusic.au(in = 3079) (out= 73)(deflated 97%)
 794 adding: classes/(in = 0) (out= 0)(stored 0%)
 795 adding: classes/Animator.class(in = 2266) (out= 66)(deflated 97%)
 796 adding: classes/Wave.class(in = 3778) (out= 81)(deflated 97%)
 797 adding: images/(in = 0) (out= 0)(stored 0%)
 798 adding: images/monkey.jpg(in = 7667) (out= 91)(deflated 98%)
 799 adding: images/at_work.gif(in = 6621) (out= 89)(deflated 98%)
 800 
 801 % ls -F
 802 audio/ bundle.jar classes/ images/
 803 .fi
 804 \f1
 805 .RE
 806 次の例では、
 807 .I t 
 808 オプションを指定して、jar ファイル中のエントリ名を表示します。
 809 .RS 
 810 \f3
 811 .nf
 812 % jar tf bundle.jar
 813 META-INF/
 814 META-INF/MANIFEST.MF
 815 audio/1.au
 816 audio/2.au
 817 audio/3.au
 818 audio/spacemusic.au
 819 classes/Animator.class
 820 classes/Wave.class
 821 images/monkey.jpg
 822 images/at_work.gif
 823 .fi
 824 \f1
 825 .RE
 826 クラスの読み込みを高速化するために jar ファイルにインデックスファイルを
 827 追加する場合は、
 828 .I i
 829 オプションを使用してください。
 830 .br
 831 .br
 832 例:
 833 .br
 834 
 835 .LP
 836 .RS 3
 837 
 838 .LP
 839 たとえば株取引アプリケーションの内部依存しているクラスを 
 840 .I main.jar
 841 、
 842 .I buy.jar
 843 、
 844 および 
 845 .I sell.jar 
 846 という 3 つの jar ファイル
 847 に分割したとします。
 848 .I main.jar 
 849 のマニフェストの 
 850 .I Class-Path
 851 属性に次のように指定した場合、 
 852 .LP
 853 .RS 5
 854 Class-Path: buy.jar sell.jar
 855 .RE
 856 .LP
 857 .I -i 
 858 オプションを使用すれば、アプリケーションのクラスの
 859 読み込みを高速化できます。
 860 .LP
 861 .RS 5
 862 % jar i main.jar
 863 .RE
 864 .LP
 865 .I INDEX.LIST 
 866 ファイルが 
 867 .I META-INF 
 868 ディレクトリに追加されます。
 869 この結果、アプリケーションのクラスローダによってクラスまたは
 870 リソースの検索が行われるときに、適切な jar ファイルがダウンロードされます。 
 871 .SH "関連項目"
 872 .LP
 873 
 874 .LP
 875 .fi
 876 http://docs.oracle.com/javase/6/docs/technotes/guides/jar/jarGuide.html
 877 の
 878 .na
 879 「
 880 .I The Jar Overview
 881 」
 882 .br
 883 
 884 .LP
 885 .fi
 886 http://docs.oracle.com/javase/6/docs/technotes/guides/jar/jar.html
 887 の
 888 .na
 889 「
 890 .I The Jar File Specification
 891 」
 892 .br
 893 
 894 .LP
 895 .fi
 896 http://docs.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#JAR_Index
 897 の
 898 .na
 899 「
 900 .I The JarIndex Spec
 901 」
 902 .br
 903 
 904 .LP
 905 .fi
 906 http://java.sun.com/docs/books/tutorial/jar
 907 の
 908 .na
 909 「
 910 .I Jar Tutorial
 911 」
 912 (Java ソフトウェアの Web サイト内) 
 913 .br
 914 
 915 .LP
 916 .fi
 917 https://docs.oracle.com/javase/6/docs/technotes/tools/share/pack200.html
 918 の
 919 .na
 920 「
 921 .I pack200 Reference Page
 922 」
 923 .LP
 924