2011-07-13 14 views
4

私はライブラリに30個近くのライブラリファイルが入っているライブラリでmytest.jarファイルを作成しました。 すべてのライブラリjarをmytest.jarの中に入れて、1つのjarファイルだけを配布する必要はありますか? マニフェストを使用して行うことはできますか?おかげさまで jarファイル内のJavaライブラリ

+0

[プロジェクト・クラスとプロジェクト依存関係を含むカスタム・マニフェスト・ファイルのjarファイルを作成することはできますか?](http://stackoverflow.com/questions/1832853/is-it)プロジェクトを作成することができます。 – skaffman

+0

API Jarを分割/再パッケージすることは、配布ライセンスに逆行する可能性があります。これがデスクトップアプリケーションの場合は、[Java Web Start](http://stackoverflow.com/tags/java-web-start/info)を使用すると、アプリを起動する上での問題全体を解決することができます。エンドユーザーにとって「ワンクリック」のソリューションであり、ユーザーが必要とする追加のJarをサーバーに追加するだけでなく、変更が必要な場合は自動更新を提供することもできます。 –

答えて

4

出荷時には表示されません。しかし、One-Jarは解決策を提供します。それはあなたが作っていると私が想定しているスタンドアロンのアプリでうまく動作します。

アプレットを作成している場合、One-Jarは機能しません。

7

標準のJavaクラスローダーでは、jars-inside-jarsからクラスをロードすることはできません。しかし、カスタムクラスローダを使用することは可能です。これは例えばUberJarの動作です。

maven shade pluginのアプローチは異なります。それは、あなたが依存しているすべての瓶を開梱し、それらを(自分の授業と一緒に)1つの大きな瓶に詰めるでしょう。その後、通常のクラスローダを使用することができます。これはより簡単で、jarjarを使用していなくても可能です。

+3

は、 'maven shade plugin'を使うときや、すべてのjarファイルをunpackaして再パッケージするときに注意する必要があります.2つのjarファイルには共通ファイルがあり、jarファイルにはもう一つのjarファイルが上書きされる可能性があります。 –

+2

shadeプラグインは、シェーディング ")、これを避けるために - しかし、はい、あなたは注意する必要があります。 –

+0

誰かがそのパッケージを作成したことはかなり驚きです。私はそれをやってみることを考えました。 – djangofan

1

通常、この目的のために、jarjarのようなジャーリパッキングツールを使用します。

+0

@Lorenzo Heikoが既に追加したものは、ここにリンクがあります:http://code.google.com/p/jarjar/これはJavaの制約であり、これらのjarを別々にして追加するほうが良いでしょうそれらをクラスパスに変換します。 – Ayusman

関連する問題