web-dev-qa-db-ja.com

ライブラリを抽出してjarファイルにパッケージ化することの違い

実行可能なjarファイルを作成して、Eclipseからjarファイルにライブラリを抽出してパッケージ化することの違いを知りたいです。

私のプログラム(実行可能なjar)がこれらの外部ライブラリ(jar)を必要とする他のクラスを使用している場合、何を選ぶべきですか?

68
ctekk

生成されたjarファイルにjarを入れたい場合は、パッケージ化方法を使用できます。たとえば、Apacheライブラリまたは他のサードパーティjarを使用している場合、これらのjarを生成されたjarに保持したい場合があります。この場合、パッケージを使用します。 「必要なライブラリをjarファイルにパッケージ化する」オプションは、org.Eclipse.jdt.internal.jarinjarloaderパッケージのクラスを生成ファイルに配置し、このパッケージはルートディレクトリのすぐ下にあります生成されたjarファイルの。このオプションは、Eclipseのjarローダークラスにより、サイズの点でより大きなjarファイルも作成します。

必要なライブラリを抽出すると、パッケージの命名規則に従ってサードパーティライブラリのクラスがjarファイルに配置されます。 jarコンテンツを開くと、org.Apache..パッケージの下にいくつかのクラスが表示されます。

メインクラスのエントリは、これらのjarファイルのMANIFEST.MFファイル間で異なります。

パッケージ必要なライブラリの場合のメインクラスエントリ:

Main-Class: org.Eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

extract必須ライブラリの場合のメインクラスエントリ:

Main-Class: YourMainClass
45
Juvanis

私が使用する場合の主な違いは、packaged JARファイルが別個のアイテムとしてそのまま含まれているため、著作権情報と署名データが保持されることです。

extractを選択した場合、クラスファイルは元のコンテキストから取り出され、元のコンテキストのように保存されるため、最終的なJARのサイズは小さくなりますが、一部のライセンス条件に違反する可能性があります場合。この場合、Eclipseはライセンスについても警告します。

そのため、サードパーティのJARライブラリを使用する場合は、常にpackageとするのが専門家です。

1
MikeW

両方の方法で試して、結果のjarファイルをZipプログラムで開きます。非常に有益です。

0
bobanahalf