pack200コマンドは、Java gzip圧縮プログラムを使用して、Java Archive (JAR)ファイルをpack200圧縮ファイルに変換する場合に使用します。
形式
pack200 [-opt... | --option=value] x.pack[.gz] JAR-file
-opt... | --option=valueオプションは任意の順序で指定できます。コマンド行またはpropertiesファイルに指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。「pack200コマンドのオプション」を参照してください。
x.pack[.gz]出力ファイルの名前。
file.jar入力ファイルの名前。
説明
 pack200コマンドは、Java gzip圧縮プログラムを使用して、JARファイルをpack200圧縮ファイルに変換するJavaアプリケーションです。このコマンドは、JARファイルをWebデプロイメント用にpack200圧縮ファイルにパッケージ化します。pack200ファイルは高圧縮のファイルであり、直接デプロイすると帯域幅を節約し、ダウンロード時間を短縮できます。
次の例では、一般的な使用方法を示しますが、ここではmyarchive.pack.gzは、pack200コマンドのデフォルト設定で生成されます。
pack200 myarchive.pack.gz myarchive.jar
注意:
このコマンドとpackを混同しないでください。packコマンドとpack200コマンドは別々の製品です。JDKに付属するJava SE API仕様との相違が見つかった場合には、仕様を優先してください。
終了ステータス
終了値(正常に完了した場合は0、エラーが発生した場合は0よりも大きい数値)が返されます。
pack200コマンドのオプション
pack200コマンドには、圧縮エンジンの設定や微調整を行うオプションが用意されています。次の例では、一般的な使用法を示します。ここでmyarchive.pack.gzは、pack200コマンドのデフォルト設定で生成されます。
pack200 myarchive.pack.gz myarchive.jar
-rまたは--repackJARファイルをパックおよびアンパックすることで、JARファイルを生成します。生成されたファイルはjarsignerツールの入力ファイルとして使用できます。次の例では、myarchive.jarファイルをパックおよびアンパックします。
pack200 --repack myarchive-packer.jar myarchive.jar pack200 --repack myarchive.jar
-gまたは--no-gzippack200ファイルを生成します。このオプションを指定するときは、適切な圧縮ツールを使用する必要があります。また、ターゲット・システムでは、対応する圧縮解除ツールを使用する必要があります。
pack200 --no-gzip myarchive.pack myarchive.jar
--gzip (デフォルト) パック出力をgzipで事後圧縮します。
-Gまたは-—strip-debug出力からデバッグ属性を削除します。たとえば、SourceFile、LineNumberTable、LocalVariableTable、LocalVariableTypeTableなどの属性があります。これらの属性を削除すれば、ダウンロードとインストールのサイズは小さくなる他、デバッガの機能が制限されます。
--keep-file-order入力ファイル内のファイル順序を保存します。これはデフォルトの動作です。
-Oまたは--no-keep-file-orderすべての要素を並べ替えて転送します。また、パック・ツールはダウンロード・サイズを削減するために、JARディレクトリ名を削除します。ただし、特定のJARファイルの最適化機能(索引など)が正常に動作しない可能性があります。
-SNまたは--segment-limit=Nこの値は、各アーカイブ・セグメントの予想ターゲット・サイズN (バイト単位)です。Nバイト超を必要とする単一の入力ファイルには、独立したアーカイブ・セグメントが割り当てられます。これは特殊な例ですが、値が-1の場合、すべての入力ファイルを含む単一の巨大なセグメントが生成されます。一方、値が0の場合、クラスごとにセグメントが1つずつ生成されます。アーカイブ・セグメントのサイズが大きければ大きいほど断片化は起こりにくく、圧縮率も高くなります。ただし、こうしたセグメントを処理するためには、大量のメモリーが必要になります。
各セグメントのサイズは、セグメント内で転送される入力ファイルのサイズと、このファイルの名前のサイズ、およびその他の転送プロパティによって予測されます。
デフォルトは-1です。これは、パック・ツールが単一のセグメント出力ファイルを作成することを意味します。非常に大きな出力ファイルが生成される場合には、セグメント化を使用するか、入力ファイルをより小さなJARファイルに分割することをお薦めします。
通常、この制限が課されていない10MバイトのJARパック・ファイルは、元の10%程度のサイズにパックされます。ただし、パック・ツールでより大きなJavaヒープ(セグメントの制限の約10倍)を必要とする場合もあります。
-Evalueまたは--effort=value単一の10進数値を指定した場合、パック・ツールは、指定された圧縮率でアーカイブを圧縮します。レベル1の場合、圧縮速度は速くても圧縮率はそれほど高くありません。レベル9の場合、圧縮速度は遅くても圧縮率は高くなります。特殊な値0を指定すると、pack200コマンドは元のJARファイルを圧縮せずに直接コピーします。JSR 200標準では、すべてのアンパック・ツールはこの特殊な処理をアーカイブ全体のパススルーとして理解する必要があります。 
デフォルト値は5です。この場合、標準的な時間で、適度な圧縮が行われます。
-Hvalueまたは--deflate-hint=valueデフォルト値をオーバーライドし、入力情報を保持します。ただし、転送されるアーカイブのサイズは大きくなります。指定可能な値は、true、falseまたはkeepです。
valueがtrueまたはfalseの場合、packer200コマンドは出力アーカイブ内でそれに応じたデフレーション・ヒントを設定し、アーカイブ要素の個別のデフレーション・ヒントを転送しません。
値がkeepの場合、入力JARで見つかったデフレーション・ヒントが保持されます。これはデフォルトです。
-mvalueまたは--modification-time=value指定可能な値は、latestおよびkeepです。
値がlatestの場合、パック・ツールは元のアーカイブで使用可能なすべてのエントリ間の最終更新時刻か、そのセグメントで使用可能なすべてのエントリの最終更新時刻を特定しようとします。この単一の値はセグメントの一部として転送され、各セグメントの全エントリに適用されます。この場合、すべてのインストール・ファイルに単一の日付が設定されるという問題はありますが、アーカイブの転送サイズを少し小さくすることができます。
値がkeepの場合、入力JAR内で見つかった変更時刻が保持されます。これはデフォルトです。
-Pfileまたは--pass-file=fileファイルを圧縮せず、バイト単位で転送するように指定します。このオプションを繰返し使用して、複数のファイルを指定できます。システム・ファイル・セパレータがJARファイル・セパレータのスラッシュ(/)に置き換えられる点を除き、パス名の変換は行われません。ファイル名は、JARファイル内の文字列と完全に一致していなければなりません。fileがディレクトリ名の場合、そのディレクトリ下のすべてのファイルが渡されます。
-U actionまたは--unknown-attribute=actionデフォルトの動作をオーバーライドします。つまり、不明な属性を含むクラス・ファイルは、指定されたactionで渡されます。actionに指定可能な値は、error、stripまたはpassです。 
値がerrorの場合、pack200コマンドの操作全体に失敗し、適切な解説が表示されます。
値がstripの場合、属性が削除されます。Java仮想マシン(JVM)の必須属性を削除すると、クラス・ローダーで障害が発生する可能性があります。
値がpassの場合、クラス全体が1つのリソースとして転送されます。
-C attribute-name=layoutまたは--class-attribute=attribute-name=action(ユーザー定義属性) 「—Dattribute-name=layout」の説明を参照してください。
-F attribute-name=layoutまたは--field-attribute=attribute-name=action(ユーザー定義属性) 「—Dattribute-name=layout」の説明を参照してください
-Mattribute-name=layoutまたは--method-attribute=attribute-name=action(ユーザー定義属性) 「—Dattribute-name=layout」の説明を参照してください
—D attribute-name=layoutまたは--code-attribute=attribute-name=action(ユーザー定義属性) クラス・エンティティにclass-attribute、field-attribute、method-attribute、code-attributeなどの属性のレイアウトを指定できます。attribute-nameには、レイアウトまたはアクションが定義される属性の名前を指定します。actionに指定可能な値は、some-layout-string、error、stripまたはpassです。
some-layout-string: レイアウト言語は、JSR 200の仕様で定義されています(例: --class-attribute=SourceFile=RUH)。
値がerrorの場合、pack200の操作に失敗し、解説が表示されます。
値がstripの場合、属性が出力から削除されます。JVMの必須属性を削除すると、クラス・ローダーで障害が発生する可能性があります。たとえば、--class-attribute=CompilationID=passを指定すると、パック・ツールで追加のアクションが実行されずに、この属性を含むクラス・ファイルが渡されます。
値がpassの場合、クラス全体が1つのリソースとして転送されます。
-f pack.propertiesまたは--config-file=pack.propertiesパック・ツールを初期化するためのJavaプロパティが含まれている構成ファイルをコマンド行に指定できることを示します。
pack200 -f pack.properties myarchive.pack.gz myarchive.jar more pack.properties # Generic properties for the packer. modification.time=latest deflate.hint=false keep.file.order=false # This option will cause the files bearing new attributes to # be reported as an error rather than passed uncompressed. unknown.attribute=error # Change the segment limit to be unlimited. segment.limit=-1
-vまたは--verbose最小限のメッセージを出力します。このオプションを複数指定すると、より詳細なメッセージが作成されます。
-qまたは--quietメッセージを表示せずに動作します。
-l filenameまたは--log-file=filename出力メッセージのログ・ファイルを指定します。
-?、-hまたは--helpこのコマンドに関するヘルプ情報を出力します。
-Vまたは--versionこのコマンドに関するバージョン情報を出力します。
-Joption指定されたオプションをJava仮想マシンに渡します。たとえば、-J-Xms48mと指定すると、スタートアップ・メモリーは48Mバイトに設定されます。