." Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ." .TH jar 1 "05 Jul 2012" .LP .SH "名前" jar \- Java ARchiveツール .LP \f3jar\fPは複数のファイルを1つのJARアーカイブ・ファイルに結合します。 .RS 3 .TP 2 o 形式 .TP 2 o 説明 .TP 2 o オプション .TP 2 o コマンドライン引数ファイル .TP 2 o 例 .TP 2 o 関連項目 .RE .LP .SH "形式" .LP .RS 3 .TP 3 JARファイルの作成 \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 .TP 3 JARファイルの更新 \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 .TP 3 JARファイルの抽出 \f4jar x\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP .TP 3 JARファイルの目次表示 \f4jar t\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP .TP 3 JARファイルへのインデックスの追加 \f4jar i\fP \f2jarfile\fP \f2[\-J\fP\f2option\fP\f2]\fP .RE .LP .LP 説明 .LP .RS 3 .TP 3 cuxtiv0Mmfe \f2jar\fPコマンドを制御するオプション .TP 3 jarfile 作成(\f2c\fP)、更新(\f2u\fP)、抽出(\f2x\fP)または目次表示(\f2t\fP)の対象となるJARファイル。\f2f\fPオプションとファイル名\f2jarfile\fPとがペアになります。つまり、片方を記述すれば、もう一方も記述する必要があります。\f2f\fPと\f2jarfile\fPを省略すると、標準入力から「JARファイル」が取得されるか(xおよびtの場合)、標準出力へ「JARファイル」が送信されます(cおよびuの場合)。 .TP 3 inputfiles \f2jarfile\fPに結合されるか(cおよびuの場合)、\f2jarfile\fPから抽出(xの場合)または一覧表示(tの場合)される、空白で区切られたファイルまたはディレクトリ。すべてのディレクトリは再帰的に処理されます。このファイルは、オプション\f20\fP(ゼロ)を使用しないかぎり圧縮されます。 .TP 3 manifest JARファイルのMANIFEST.MF内に含める\f2name\fP\f2:\fP\f2value\fPのペアが含まれている既存のマニフェスト・ファイル。\f2m\fPオプションとファイル名\f2manifest\fPとがペアになります。つまり、片方を記述すれば、もう一方も記述する必要があります。\f3m\fP、\f3f\fPおよび\f3e\fPの出現順序は、\f2manifest\fP、\f2jarfile\fP、\f2entrypoint\fPの出現順序と一致する必要があります。 .TP 3 entrypoint 実行可能JARファイル内にバンドルされたスタンドアロン・アプリケーションのアプリケーション・エントリ・ポイントとして設定するクラスの名前。\f2e\fPオプションとentrypointは対になっています。どちらかを指定する場合は両方とも指定する必要があります。\f3m\fP、\f3f\fPおよび\f3e\fPの出現順序は、\f2manifest\fP、\f2jarfile\fP、\f2entrypoint\fPの出現順序と一致する必要があります。 .TP 3 \-C\ dir これに続く\f2inputfiles\fP引数を処理する間、ディレクトリを\f2dir\fPへ一時的に変更します。\f2\-C\ \fP\f2dir\fP \f2inputfiles\fPのセットは複数使用できます。 .TP 3 \-Joption Java実行環境へ渡されるオプション。(\f2\-J\fPと\f2option\fPの間には空白を入れないでください。) .RE .LP .SH "説明" .LP \f3jar\fPツールは複数のファイルを1つのJARアーカイブ・ファイルに結合します。\f3jar\fPは、ZIPおよび .na \f2ZLIB\fP @ .fi http://www.gzip.org/zlib/圧縮形式に基づく汎用のアーカイブおよび圧縮ツールです。ただし\f3jar\fPツールの主な目的は、いくつかのJavaアプレットやアプリケーションを1個のアーカイブに統合することです。アプレットやアプリケーションのコンポーネント(ファイル、イメージ、およびサウンド)が1つのアーカイブに結合されていると、Javaエージェント(ブラウザなど)は、それらのコンポーネントを1回のHTTPトランザクションでダウンロードすることができ、コンポーネントごとに新しい接続が不要になります。これにより、ダウンロード時間が大幅に短縮されます。また、\f3jar\fPはファイルの圧縮も行うので、ダウンロード時間がさらに短縮されます。また、ファイル内の個々のエントリにアプレット作成者による署名を書き込めるので、配布元の認証が可能になります。jarツールの構文は、\f2tar\fPコマンドの構文とほぼ同じです。\f3JAR\fPアーカイブは、圧縮されているかどうかにかかわらず、クラス・パスのエントリとして使用できます。 .LP 複数のファイルをJARファイルへ結合する一般的な使用方法は次のとおりです。 .LP .nf \f3 .fl % jar cf myFile.jar *.class .fl \fP .fi .LP この例では、現在のディレクトリにあるすべてのクラス・ファイルが\f2myFile.jar\fPという名前のファイルに格納されます。jarツールは自動的に、\f2META\-INF/MANIFEST.MF\fPという名前のマニフェスト・ファイル・エントリを生成します。これは常に、JARファイルの最初のエントリになります。マニフェスト・ファイルは、アーカイブに関するメタ情報を宣言し、そのデータを\f2name\ :\ value\fPのペアとして格納します。jarツールがマニフェスト・ファイル内にメタ情報を格納する方法の詳細は、 .na \f2JARファイルの仕様\fP @ .fi http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR%20Manifestを参照してください。 .LP 既存のマニフェスト・ファイル内に格納された\f2name\ :\ value\fPのペアをJARファイルに含める必要がある場合には、次のように\f2\-m\fPオプションを使用してそのファイルを指定します。 .LP .nf \f3 .fl % jar cmf myManifestFile myFile.jar *.class .fl \fP .fi .LP 既存のマニフェスト・ファイルは改行文字で終わっている必要があります。マニフェスト・ファイルが改行文字で終わっていないと、\f3jar\fPはその最終行を解析しません。 .br .LP .br .LP \f3注意:\ \fPコマンドラインに\f2cmf\fPではなく\f2cfm\fPが指定された(mと\-fオプションの順番を逆にした)jarコマンドの場合、\f3jar\fPコマンドラインにまずJARアーカイブの名前を指定し、続いてマニフェスト・ファイルの名前を指定する必要があります。次に例を示します。 .nf \f3 .fl % jar cfm myFile.jar myManifestFile *.class .fl \fP .fi .LP マニフェストは、RFC822 ASCII形式で規定されたテキスト形式であるため、マニフェスト・ファイルの内容を簡単に表示および処理できます。 .LP JARファイルからファイルを抽出する場合は、\f2x\fPを使用します。 .LP .nf \f3 .fl % jar xf myFile.jar .fl \fP .fi .LP .LP jarファイルから個別のファイルを抽出する場合は、そのファイル名を指定します。 .LP .nf \f3 .fl % jar xf myFile.jar foo bar .fl \fP .fi .LP .LP JDKのバージョン1.3以降から、\f2jar\fPユーティリティで .na \f2JarIndex\fP @ .fi http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR_Indexがサポートされています。JarIndexを使用すると、アプリケーションのクラス・ローダーでJARファイルからクラスがロードされるときの効率が向上します。アプリケーションまたはアプレットが複数のJARファイルにバンドルされている場合は、必要なJARファイルのみがダウンロードされて開かれ、クラスがロードされます。このパフォーマンスの最適化は、\f2\-i\fPオプションを指定して\f2jar\fPを実行すると有効になります。このオプションを使用すると、指定したJARメイン・ファイルと、そのメイン・ファイルが依存しているすべてのJARファイルについて、パッケージ位置情報が生成されます。メイン・ファイルが依存しているJARファイルは、JARメイン・ファイルのマニフェストの\f2Class\-Path\fP属性に指定しておく必要があります。 .LP .nf \f3 .fl % jar i main.jar .fl \fP .fi .LP .LP この例では、\f2INDEX.LIST\fPファイルが\f2main.jar\fPの\f2META\-INF\fPディレクトリ内に挿入されます。 .br .br アプリケーションのクラス・ローダーは、このファイルに格納されている情報を使用して、効率的にクラスをロードします。インデックス・ファイルに位置情報を格納する方法の詳細は、\f2JarIndex\fP仕様を参照してください。 .br .br ディレクトリをコピーするには、まず\f2dir1\fP内のファイルを圧縮して\f2stdout\fPに出力し、続いて\f2stdin\fPから抽出して\f2dir2\fPに出力します(\f2\-f\fPオプションはどちらの\f2jar\fPコマンドでも省略します)。 .LP .nf \f3 .fl % (cd dir1; jar c .) | (cd dir2; jar x) .fl \fP .fi .LP .LP \f2jar\fPを使用してJARファイルやJARマニフェスト・ファイルを操作するサンプル・コマンドを確認するには、次の例を参照してください。また、 .na \f2Javaチュートリアル\fP @ .fi http://docs.oracle.com/javase/tutorial/deployment/jar/のJARトライアルも参照してください。 .LP .SH "オプション" .LP .RS 3 .TP 3 c \f2jarfile\fPという名前の新しいアーカイブ・ファイルを作成する(\f2f\fPが指定された場合)か、標準出力に出力します(\f2f\fPと\f2jarfile\fPが省略された場合)。\f2inputfiles\fPで指定されたファイルとディレクトリを、このアーカイブに追加します。 .TP 3 u \f2inputfiles\fPに指定されたファイルやディレクトリを追加して、既存ファイル\f2jarfile\fPを更新します(\f2f\fPが指定されている場合)。次に例を示します。 .nf \f3 .fl jar uf foo.jar foo.class .fl \fP .fi 上のコマンドは、ファイル\f2foo.class\fPを既存のJARファイル\f2foo.jar\fPに追加します。次の例に示すように、\f2\-u\fPオプションは、マニフェスト・エントリも更新できます。 .nf \f3 .fl jar umf manifest foo.jar .fl \fP .fi 上のコマンドは、\f2foo.jar\fPマニフェストを\f2manifest\fP内の\f2name : value\fPのペアで更新します。 .TP 3 x \f2jarfile\fPからファイルとディレクトリを抽出します(\f2f\fPが指定された場合)、または標準入力からファイルやディレクトリを抽出します(\f2f\fPと\f2jarfile\fPが省略された場合)。\f2inputfiles\fPが指定されている場合は、指定されたファイルとディレクトリのみが抽出されます。それ以外の場合は、すべてのファイルとディレクトリが抽出されます。抽出されたファイルの日時は、アーカイブ内で設定されたものです。 .TP 3 t \f2jarfile\fPから目次を表示します(\f2f\fPが指定された場合)、または標準入力から目次を表示します(\f2f\fPと\f2jarfile\fPが省略された場合)。\f2inputfiles\fPが指定されている場合は、指定されたファイルとディレクトリのみが一覧表示されます。それ以外の場合は、すべてのファイルとディレクトリが一覧表示されます。 .TP 3 i 指定された\f2jarfile\fPと、それに依存するJARファイルについて、インデックス情報を生成します。次に例を示します。 .nf \f3 .fl jar i foo.jar .fl \fP .fi .LP 上のコマンドは、\f2foo.jar\fP内に\f2INDEX.LIST\fPファイルを生成します。このファイルには、\f2foo.jar\fP、および\f2foo.jar\fPの\f2Class\-Path\fP属性に指定されたすべてのJARファイルに入っている各パッケージの位置情報が格納されています。インデックスの例を参照してください。 .TP 3 f 作成(\f2c\fP)、更新(\f2u\fP)、抽出(\f2x\fP)、インデックス追加(\f2i\fP)または表示(\f2t\fP)の各処理の対象となるファイル\f2jarfile\fPを指定します。\f2f\fPオプションとファイル名\f2jarfile\fPとがペアになります。つまり、片方を記述すれば、もう一方も記述する必要があります。\f2f\fPと\f2jarfile\fPを省略すると、\f2stdin\fPからJARファイル名が取得される(xおよびtの場合)か、\f2stdout\fPにJARファイルが出力されます(cおよびuの場合)。 .TP 3 v 詳細な出力を標準出力に生成します。次に例を示します。 .TP 3 0 (ゼロ)ZIPによる圧縮を使用せずに、保存します。 .TP 3 M マニフェスト・ファイル・エントリを作成しません(cおよびuの場合)。または、マニフェスト・ファイル・エントリが存在する場合は削除します(uの場合)。 .TP 3 m \f2META\-INF/MANIFEST.MF\fPのファイルで指定したマニフェスト・ファイル\f2manifest\fPの\f2name : value\fPの属性ペアを組み込みます。\f2jar\fPは、すでに同じ名前で存在しない場合は、その\f2name\ :\ value\fPペアを追加します。同じ名前で存在する場合、\f2jar\fPはその値を更新します。 .br .br コマンドラインで、\f3m\fPと\f3f\fPの文字は、\f2manifest\fPと\f2jarfile\fPの入力順序と同じ順序で記述する必要があります。たとえば、次のように使用します。 .nf \f3 .fl jar cmf myManifestFile myFile.jar *.class .fl \fP .fi デフォルトのマニフェストには含まれないマニフェストに、特別な目的の\f2name\ :\ value\fPの属性ペアを追加できます。たとえば、ベンダー情報、バージョン情報、パッケージ・シーリング、またはJARにバンドルされたアプリケーションを実行可能にするための属性を追加できます。\f4\-m\fPオプションの使用例は、Javaチュートリアルの .na \f2JARファイルでのプログラムのパッケージ化\fP @ .fi http://docs.oracle.com/javase/tutorial/deployment/jar/のレッスンを参照してください。 .TP 3 e 実行可能JARファイル内にバンドルされたスタンドアロン・アプリケーションのアプリケーション・エントリ・ポイントとして、\f2entrypoint\fPを設定します。このオプションを使用すると、マニフェスト・ファイル内の\f2Main\-Class\fP属性値が作成または上書きされます。このオプションは、JARファイルの作成中または更新中に使用できます。このオプションを使用すれば、マニフェスト・ファイルを編集または作成することなしに、アプリケーションのエントリ・ポイントを指定できます。 .br .br .br たとえば、次のコマンドでは\f2Main.jar\fPが作成されますが、その際、マニフェスト内の\f2Main\-Class\fP属性値は\f2Main\fPに設定されます。 .nf \f3 .fl jar cfe Main.jar Main Main.class .fl \fP .fi 次のコマンドを実行するとjavaランタイムから直接このアプリケーションを起動できます。 .nf \f3 .fl java \-jar Main.jar .fl \fP .fi あるパッケージ内にエントリ・ポイントのクラス名が含まれている場合、ドット(「.」)、スラッシュ(「/」)のいずれかの文字をその区切り文字として使用できます。たとえば、\f2Main.class\fPが\f2foo\fPという名前のパッケージに含まれている場合、エントリ・ポイントは次のようにして指定できます。 .nf \f3 .fl jar \-cfe Main.jar foo/Main foo/Main.class .fl \fP .fi または .nf \f3 .fl jar \-cfe Main.jar foo.Main foo/Main.class .fl \fP .fi \f3注意:\fP \f2\-m\fPオプションと\f2\-e\fPオプションの両方を同時に指定した場合、指定したマニフェストにも\f2Main\-Class\fP属性が含まれていれば、\f2Main.class\fPの指定があいまいになってエラーや発生し、JARの作成処理や更新処理が異常終了します。 .TP 3 \-C\ dir \f2jar\fPコマンドの実行中に後続の\f2inputfiles\fP引数を処理するときに、一時的にディレクトリを変更します(\f2cd\fP\ \f2dir\fP)。この処理は、UNIXの\f2tar\fPユーティリティの\f2\-C\fPオプションの機能に類似しています。 .br .br たとえば、次のコマンドは、\f2classes\fPディレクトリに移動し、そのディレクトリから\f2bar.class\fPを\f2foo.jar\fPに追加します。 .nf \f3 .fl jar uf foo.jar \-C classes bar.class .fl \fP .fi 次のコマンドでは、\f2classes\fPディレクトリに移動し、\f2classes\fPディレクトリ内のすべてのファイルを\f2foo.jar\fPに追加します(jarファイルにはclassesディレクトリを作成しません)。次に元のディレクトリに戻ってから、\f2bin\fPディレクトリに移動し、\f2xyz.class\fPを\f2foo.jar\fPに追加します。 .nf \f3 .fl jar uf foo.jar \-C classes . \-C bin xyz.class .fl \fP .fi \f2classes\fPにファイル\f2bar1\fPと\f2bar2\fPが格納されている場合に、\f2jar tf foo.jar\fP使用したときのJARファイルの中身を、次に示します。 .nf \f3 .fl META\-INF/ .fl META\-INF/MANIFEST.MF .fl bar1 .fl bar2 .fl xyz.class .fl \fP .fi .LP .TP 3 \-Joption Java実行環境に\f2option\fPを渡します。\f2option\fPには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\f4\-J\-Xmx48M\fPと指定すると、最大メモリーが48Mバイトに設定されます。\f2\-J\fPを使用して背後の実行環境にオプションを渡すことはよく行われています。 .RE .LP .SH "コマンドライン引数ファイル" .LP jarのコマンドラインを短くしたり簡潔にしたりするために、\f2jar\fPコマンドに対する引数(\f2\-J\fPオプションを除く)を含む1つ以上のファイルを指定することができます。これにより、任意の長さのjarコマンドを作成でき、オペレーティング・システムによるコマンドラインの制限から解放されます。 .LP 引数ファイルにはオプションとファイル名を含めることができます。ファイル内の各引数は、スペースまたは改行で区切ります。引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。通常はオペレーティング・システム・シェルによって展開されるワイルドカード(*)は展開されません。\f2@\fP文字を使用して、ファイルを再帰的に解釈することはできません。\f2\-J\fPオプションはサポートされません。このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 .LP .LP \f2jar\fPを実行するときに、各引数ファイルのパスと名前の先頭に\f2@\fP文字を付けて渡します。\f2jar\fPは、\f2@\fP文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 .br .br 次の例で、\f2classes.list\fPには、\f2find\fPコマンドによって出力されたファイルの名前が格納されます。 .LP .nf \f3 .fl % find \fP\f3.\fP \-name '*.class' \-print > classes.list .fl .fi .LP .LP 次に、引数ファイル構文を使用して\f2Classes.list\fPを\f2jar\fPに渡すことで、そのリストに対して\f2jar\fPコマンドを実行できます。 .LP .nf \f3 .fl % jar cf my.jar @classes.list .fl \fP .fi .LP 引数ファイルはパスを指定できますが、相対パスが記述された引数ファイル内のすべてのファイル名は、渡されたパスに対して相対的ではなく、現在の作業ディレクトリに相対的となります。次はその例です。 .nf \f3 .fl % jar @path1/classes.list .fl \fP .fi .LP .LP .LP .SH "例" .LP 特定のディレクトリ内のすべてのファイルをアーカイブに追加する(そのアーカイブがすでに存在する場合は、その内容を上書きする)には、次のようにします。\f2\-v\fPオプションを使用して情報を詳細に列挙するように指定すると、サイズや最新の更新日など、アーカイブ内のファイルについての詳細情報が表示されます。 .nf \f3 .fl % ls .fl 1.au Animator.class monkey.jpg .fl 2.au Wave.class spacemusic.au .fl 3.au at_work.gif .fl .fl % jar cvf bundle.jar * .fl added manifest .fl adding: 1.au(in = 2324) (out= 67)(deflated 97%) .fl adding: 2.au(in = 6970) (out= 90)(deflated 98%) .fl adding: 3.au(in = 11616) (out= 108)(deflated 99%) .fl adding: Animator.class(in = 2266) (out= 66)(deflated 97%) .fl adding: Wave.class(in = 3778) (out= 81)(deflated 97%) .fl adding: at_work.gif(in = 6621) (out= 89)(deflated 98%) .fl adding: monkey.jpg(in = 7667) (out= 91)(deflated 98%) .fl adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%) .fl \fP .fi .LP すでに画像、オーディオ・ファイル、およびクラス用のサブディレクトリに分けている場合は、これらを単一のJARファイルに結合できます。 .nf \f3 .fl % ls \-F .fl audio/ classes/ images/ .fl .fl % jar cvf bundle.jar audio classes images .fl added manifest .fl adding: audio/(in = 0) (out= 0)(stored 0%) .fl adding: audio/1.au(in = 2324) (out= 67)(deflated 97%) .fl adding: audio/2.au(in = 6970) (out= 90)(deflated 98%) .fl adding: audio/3.au(in = 11616) (out= 108)(deflated 99%) .fl adding: audio/spacemusic.au(in = 3079) (out= 73)(deflated 97%) .fl adding: classes/(in = 0) (out= 0)(stored 0%) .fl adding: classes/Animator.class(in = 2266) (out= 66)(deflated 97%) .fl adding: classes/Wave.class(in = 3778) (out= 81)(deflated 97%) .fl adding: images/(in = 0) (out= 0)(stored 0%) .fl adding: images/monkey.jpg(in = 7667) (out= 91)(deflated 98%) .fl adding: images/at_work.gif(in = 6621) (out= 89)(deflated 98%) .fl .fl % ls \-F .fl audio/ bundle.jar classes/ images/ .fl \fP .fi .LP JARファイルのエントリ名を表示するには、\f2t\fPオプションを使用します。 .nf \f3 .fl % jar tf bundle.jar .fl META\-INF/ .fl META\-INF/MANIFEST.MF .fl audio/1.au .fl audio/2.au .fl audio/3.au .fl audio/spacemusic.au .fl classes/Animator.class .fl classes/Wave.class .fl images/monkey.jpg .fl images/at_work.gif .fl \fP .fi .LP .LP クラス・ロードを高速にするためにインデックス・ファイルをJARファイルに追加するには、\f2i\fPオプションを使用します。 .br .br 例: .br .LP たとえば、株取引アプリケーションの相互依存しているクラスを、\f2main.jar\fP、\f2buy.jar\fPおよび\f2sell.jar\fPという3つのJARファイルに分割したとします。 .br .LP .br .LP \f2main.jar\fPのマニフェストの\f2Class\-path\fP属性に次のように指定した場合、 .nf \f3 .fl Class\-Path: buy.jar sell.jar .fl \fP .fi .LP \f2\-i\fPオプションを使用すれば、アプリケーションのクラスの読込みを高速化できます。 .nf \f3 .fl % jar i main.jar .fl \fP .fi .LP \f2INDEX.LIST\fPファイルが\f2META\-INF\fPディレクトリに挿入されます。これにより、アプリケーションのクラス・ローダーによってクラスまたはリソースの検索が行われるときに、適切なjarファイルがダウンロードされるようになります。 .SH "関連項目" .LP .LP .na \f2JARファイルの概要\fP @ .fi http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jarGuide.html .LP .LP .na \f2JARファイルの仕様\fP @ .fi http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html .LP .LP .na \f2JarIndexの仕様\fP @ .fi http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR_Index .LP .LP .na \f2JARチュートリアル\fP @ .fi http://docs.oracle.com/javase/tutorial/deployment/jar//index.html .LP .LP pack200(1) .LP