pack200(1) Javaデプロイメント・ツール pack200(1)

# 名前

pack200 - WebデプロイメントのためにJARファイルをpack200圧縮ファイルにパッケージします。

# 概要

```
pack200 [options] output-file JAR-file
```

オプションは任意の順序で指定できます。コマンド行またはpropertiesファイルに指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。

*options*

コマンド行オプション。オプションを参照してください。

*output-file*

出力ファイルの名前。

*JAR-file*

入力ファイルの名前。

# 説明

**pack200**コマンドは、Java gzipコンプレッサを使用してJARファイルをpack200圧縮ファイルに変換するJavaアプリケーションです。pack200ファイルは高圧縮のファイルで、直接デプロイでき、帯域幅の節約やダウンロード時間の短縮が可能です。

**pack200**コマンドには、圧縮エンジンの設定や微調整を行うオプションがあります。一般的な使用方法を次の例に示します。**myarchive.pack.gz**がデフォルトの**pack200**コマンド設定で作成されます。

```
pack200 myarchive.pack.gz myarchive.jar


 
```

# オプション

-r  
\--repack

JARファイルをパックした後アンパックして、JARファイルを生成します。生成されたファイルは[**jarsigner**(1)](/man/enterprise-packages/adoptium-openjdk-8/jarsigner.1)ツールの入力ファイルとして使用できます。次の例では、myarchive.jarファイルをパックした後、アンパックします。

```
pack200 --repack myarchive-packer.jar myarchive.jar
pack200 --repack myarchive.jar


 
```

次の例では、入力ファイル内のファイルの順序を保持します。

-g  
\--no-gzip

**pack200**ファイルを生成します。このオプションを指定するときは、適切な圧縮ツールを使用する必要があります。また、ターゲット・システムでは、対応する圧縮解除ツールを使用する必要があります。

```
pack200 --no-gzip myarchive.pack myarchive.jar


 
```

-G  
\--strip-debug

出力からデバッグ属性を削除します。これには、**SourceFile**、**LineNumberTable**、**LocalVariableTable**、**LocalVariableTypeTable**が含まれます。これらの属性を削除すれば、ダウンロードとインストールのサイズは小さくなりますが、デバッガの機能は制限されます。

--keep-file-order

入力ファイル内のファイルの順序を保持します。これは、デフォルトの動作です。

-O  
\--no-keep-file-order

パック・ツールは、すべての要素を並べ替えて送信します。パック・ツールは、JARディレクトリ名を削除してダウンロード・サイズを削減することもできます。ただし、インデックスなど、特定のJARファイルの最適化機能が正常に動作しなくなることがあります。

-S*value*  
\--segment-limit=*value*

この値は、各アーカイブ・セグメントの予想ターゲット・サイズ*N* (バイト単位)です。単一の入力ファイルの必要サイズが*N*バイトを超えると、固有のアーカイブ・セグメントが提供されます。特殊なケースとして、値が**-1**の場合は、すべての入力ファイルを含む大きな単一のセグメントが生成され、値が0の場合は、クラスごとにセグメントが1つずつ生成されます。アーカイブ・セグメントが大きくなると、断片化が少なくなり圧縮率が高くなりますが、その処理には多くのメモリーが必要です。

各セグメントのサイズは、セグメントに変換されるそれぞれの入力ファイルのサイズのほか、その名前と他の送信されるプロパティのサイズを計算して推測されます。

デフォルトは-1です。つまり、パック・ツールは単一のセグメント出力ファイルを作成します。極端に大きな出力ファイルが生成される場合には、入力ファイルをセグメント化(分割)してより小さなJARにすることを強くお薦めします。

この制限が課されていない10 MBのJARパック・ファイルは通常、約10%小さくパックされます。しかし、パック・ツールでより大きなJavaヒープ(セグメントの制限の約10倍)を必要とする場合もあります。

-E*value*  
\--effort=*value*

単一の10進数値を指定した場合、パック・ツールは、指定された圧縮率でアーカイブを圧縮します。レベル1の場合は、比較的短い圧縮時間で多少大きめのファイルが生成されますが、レベル9の場合は、非常に長い時間がかかるものの、より圧縮率の高いファイルが生成されます。特殊な値0を指定した場合は、**pack200**コマンドは元のJARファイルを圧縮なしで直接コピーします。JSR 200標準では、すべての解凍プログラムが、この特別な場合をアーカイブ全体のパススルーと解釈するように規定しています。

デフォルトは5です。この場合、標準的な時間で適切な圧縮が行われます。

-H*value*  
\--deflate-hint=*value*

入力情報を保存するというデフォルト値をオーバーライドします。転送されるアーカイブのサイズは大きくなる場合があります。指定可能な値は、**true**、**false**または**keep**です。

**value**が**true**またはfalseの場合、**packer200**コマンドは指定に従ってデフレーション・ヒントを出力アーカイブに設定します。アーカイブ要素の個々のデフレーション・ヒントは転送されません。

**keep**値は、入力JARで確認されたデフレーション・ヒントを保持します。これがデフォルトです。

-m*value*  
\--modification-time=*value*

指定可能な値は**latest**と**keep**です。

値が最新の場合、パック・ツールは、元のアーカイブの使用可能なすべてのエントリのうちの最終更新時刻か、そのセグメントの使用可能なすべてのエントリの最終更新時刻を特定しようとします。この単一の値はセグメントの一部として転送され、各セグメントの全エントリに適用されます。この場合、すべてのインストール・ファイルに単一の日付が設定されるという問題はありますが、アーカイブの転送サイズを少し小さくすることができます。

値が**keep**の場合、入力JARで確認された変更時間が保持されます。これがデフォルトです。

-P*file*  
\--pass-file=*file*

ファイルを圧縮せず、バイト単位で転送するように指定します。このオプションを繰返し使用して、複数のファイルを指定できます。システム・ファイル・セパレータがJARファイル・セパレータのスラッシュ(/)に置き換えられる点を除き、パス名の変換は行われません。結果として得られるファイル名は、文字列として正確にJARファイルでの出現と一致している必要があります。**file**にディレクトリ名を指定した場合、そのディレクトリ内のすべてのファイルが転送されます。

-U*action*  
\--unknown-attribute=*action*

デフォルトの動作をオーバーライドします。つまり、不明な属性を含むクラス・ファイルが、指定した**action**によって渡されます。アクションとして指定可能な値は、**error**、**strip**または**pass**です。

値が**error**の場合、**pack200**コマンド操作全体が失敗して適切な説明が表示されます。

値が**strip**の場合、属性は削除されます。Java Virtual Machine (JVM)必須属性を削除すると、クラス・ローダーの障害が発生することがあります。

値が**pass**の場合、クラス全体が1つのリソースとして転送されます。

-C*attribute-name*=*layout*  
\--class-attribute=*attribute-name*=*action*

次のオプションを参照してください。

-F*attribute-name*=*layout*  
\--field-attribute=*attribute-name*=*action*

次のオプションを参照してください。

-M*attribute-name*=*layout*  
\--method-attribute=*attribute-name*=*action*

次のオプションを参照してください。

-D*attribute-name*=*layout*  
\--code-attribute=*attribute-name*=*action*

前述の4つのオプションでは、クラス・エンティティに**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**の場合、属性が出力から削除されます。VM必須属性を削除するとクラス・ローダーの障害が発生することがあります。たとえば、**--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

このコマンドに関するバージョン情報を出力します。

-J*option*

指定されたオプションをJava Virtual Machineに渡します。詳細は、[java(1)](/man/enterprise-packages/adoptium-openjdk-8/java.1)コマンドのリファレンス・ページを参照してください。たとえば、**-J-Xms48m**と指定すると、スタートアップ・メモリーは48MBに設定されます。

# 終了ステータス

次の終了値が返されます: 正常終了の場合は0、エラーが発生した場合は0より大きい値。

# 注意

このコマンドと[**pack**(1)](/man/enterprise-packages/adoptium-openjdk-8/pack.1)を混同しないでください。**pack**および**pack200**コマンドは、別々の製品です。

JDKに付属するJava SE API仕様との相違が見つかった場合には、仕様を優先してください。

# 関連項目

•[unpack200(1)](/man/enterprise-packages/adoptium-openjdk-8/unpack200.1)

•[jar(1)](/man/enterprise-packages/adoptium-openjdk-8/jar.1)

•[jarsigner(1)](/man/enterprise-packages/adoptium-openjdk-8/jarsigner.1)

2013年11月21日 JDK 8

---

Document: pack200(1) from adoptium-openjdk-8 8.512.5-r2 (Chainguard OS)
Source: https://github.com/adoptium/jdk8u.git
