web-dev-qa-db-ja.com

実行可能なjarライブラリ処理オプションの違いは何ですか?

そこで、Java Web Startを使用してJavaアプリケーションをデプロイします。RunnableJarにエクスポートする場合、Eclipse Heliosには3つのオプションがあります。

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

相違点とは何ですか?また、.jnlpファイルにどのような影響がありますか?

単一のjarの場合、使用するすべてのライブラリへのすべての異なるパスを記述する必要がないため、簡単ではありませんか?

ライブラリとアプリケーションの両方に変更がある場合、単一のjarがより良いソリューションでしょうか?それとも<jar href=''>個々のライブラリごと?

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

75
KJW
  1. 必要なライブラリをJARに抽出-アプリが使用するライブラリから実際の.classファイルを抽出し、それらの.classファイルを実行可能なJAR内に配置します。そのため、実行可能なJARには、アプリケーションの.classファイルだけでなく、アプリケーションが使用するすべてのライブラリの.classファイルも含まれます。

  2. 必要なライブラリをJARにパッケージ化-ライブラリの実際のJARファイルを実行可能なJARに配置します。通常、JARファイル内のJARファイルはJVMによってロードできません。しかし、Eclipseはこれを可能にするために、実行可能なJARに特別なクラスを追加します。

  3. 必要なライブラリをJARの隣のサブフォルダにコピー-ライブラリJARを実行可能なJARから完全に分離します。したがって、実行可能なJARにはアプリケーションの.classファイルのみが含まれます。

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

ただし、すべてを単一のJAR(オプション#1および#2)内にパッケージ化することのマイナス面は、アプリケーションを更新する場合、ユーザーはアプリケーションを更新するためにより多くのデータをダウンロードする必要があることです。 JARを個別に保持する場合、ユーザーは、アプリケーションコードおよびすべてを含む単一の大規模なJARではなく、アプリケーションコードを含むJARをダウンロードするだけで済みます。ライブラリコード。

133
Michael