1. ホーム
  2. eclipse

[解決済み] runnable jarのライブラリ処理オプションの違いは何ですか?

2023-07-29 09:25:23

質問

Java Web Start を使用して Java アプリケーションをデプロイする予定です。Runnable Jar にエクスポートするとき、eclipse Helios には 3 つのオプションがあります。

  • 必要なライブラリをJARに展開する
  • 必要なライブラリをJARにパッケージする
  • 必要なライブラリをJARの横のサブフォルダにコピーします。

相違点は何ですか?また、私の .jnlp ファイルにどのような影響を与えますか?

単一のjarであれば、使用するすべてのライブラリの異なるパスを書く必要がないので、簡単ではないでしょうか?

ライブラリとアプリケーションの両方に変更がある場合、単一の jar がより良い解決策になりますか?それとも <jar href=''> が必要でしょうか?

また、私は.dllや.soファイルのようなネイティブライブラリを使用する必要があることに注意してください。

どのように解決するのですか?

  1. 必要なライブラリをJARに展開する - 実際の .class ファイルを抽出し、それをJARに格納します。 .class ファイルを実行可能な JAR の中に置きます。 したがって、実行可能な JAR には .class ファイルだけでなく、アプリケーションの .class ファイルだけでなく、アプリケーションが使用するすべてのライブラリの ファイルも含まれます。

  2. 必要なライブラリをJARにパッケージする - 実際の JAR ファイル を実行可能なJARに入れます。 通常、JARファイルの中のJARファイルは、JVMによって読み込まれることはありません。 しかし、Eclipse は実行可能な JAR に特別なクラスを追加して、これを可能にします。

  3. 必要なライブラリをJARの隣のサブフォルダにコピーします。 - ライブラリJARを実行可能なJARから完全に分離することで、実行可能なJARには .class ファイルだけが含まれます。

オプション #2 は、すべてを単一の JAR にきちんとパッケージ化し、ライブラリ JAR をアプリケーションの .class ファイルから分離されます。

しかし、すべてを単一の JAR 内にパッケージングすることの欠点 (オプション #1 と #2) は、アプリケーションを更新した場合、ユーザーはアプリケーションを更新するためにさらにデータをダウンロードしなければならないことです。 JAR を別々にすれば、ユーザーはアプリケーション コードを含む JAR をダウンロードするだけでよくなり、アプリケーション コードを含む巨大な JAR を 1 つダウンロードする必要がなくなります すべてのライブラリコードを含む単一の巨大な JAR をダウンロードする必要はありません。