2011-11-28 13 views
64

Java Web Startを使用してJavaアプリケーションをデプロイします。 Runnable Jarにエクスポートする場合、eclipse Heliosには3つのオプションがあります。実行可能なjarライブラリ処理オプションの違いは何ですか?

  • エキス必要なライブラリJARへの次のサブフォルダにJAR
  • コピーに必要なライブラリにライブラリを必要なJAR
  • パッケージに。

どのような違いがあり、それらが私の.jnlpファイルにどのような影響を与えますか?

単一のjarファイルの場合は、使用するすべてのライブラリにすべての異なるパスを書き込む必要がないため、簡単ですか?

ライブラリとアプリケーションの両方に変更がある場合は、単一のjarを使用する方がよいでしょうか?または、個々のライブラリごとに<jar href=''>が必要ですか?

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

答えて

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

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

  3. コピー - 実行可能JARとは完全に別のライブラリJARを保持しますので、実行可能JARは、アプリケーションの.classファイルが含まれています。

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

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

+0

+1ありがとう、非常に詳細な回答です。 – KJW

+0

好奇心、実行可能ではない瓶を作るのはどうですか?何か違いはありますか? – KJW

+8

@KimJongWoo JARが "META-INF/MANIFEST.MF"ファイル内の 'main()'メソッドの位置を定義しているので、 'java -jar myjar.jar'のような実行可能なJARを"実行 "することができます。このファイルの中の "Main-Class"設定は、 'main()'メソッドを持つクラスを定義します。 「通常の」JARはこの設定を持たない傾向がありますので、同じ方法でそれらを実行することはできません。 – Michael

関連する問題