私のアプリケーションが機能するには、複数のjarが必要です。デスクトップアプリケーションなので、ユーザーにインストールの責任を負わせることはできません。したがって、ビルドスクリプトで、jarコンテンツをビルドディレクトリに解凍し、マニフェストファイルを削除し、ソフトウェアをコンパイルして、再度jarします。私の質問は、このプロセスに長期的な副作用がありますか?
過去には、奇妙な内容のJARがありました(com.ibm
とcom.IBM
を含むDB2ドライバーのように、Windowsファイルシステムで解凍した後、これら2つのパッケージはマージされます)。
注意する必要がある唯一の問題は、複数のソースJARで同じ名前を持つ可能性のあるMETA-INF内の署名されたjarおよびその他のファイルです。
これらすべての問題の簡単な解決策は、 One-JAR を使用することです。最初に、複数のJARを解凍せずに1つにラップすることができます。そして、この答えを読んでください: リリースを1つのJARファイルにマージする最も簡単な方法
より単純なソリューション(IMO)は、 Mavenのアセンブリプラグイン を使用しています。これは、 以前のQ&A でリンクされた別の質問への回答の1つにも記載されています。これは、ビルドツールとしてMaven(それ自体が推奨されるツール)を使用している場合に提供されます。
もう1つの優れたオプションは ProGuard です。これは、コードをまた縮小および/または難読化できます。
一部のjarファイルが署名されている場合は、解凍/再パックすると署名が失われます。
プライマリターゲットプラットフォームがWindowsデスクトップの場合は、アプリケーションのjarファイルからWindowsネイティブexeを生成することも検討できます。
さて、あなたはあなたのサードパーティの瓶のマニフェストを捨てているので、それはあなたに問題を引き起こす可能性があります。たとえば、「Sealed」属性を破棄することでセキュリティの問題を引き起こしている可能性があります。
CLASSPATHを正しく設定するアプリケーションを起動するための簡単なインストーラーとスクリプトを作成してみませんか?
One-JARがその役割を果たし、SpringやGuiceなどのフレームワークをサポートする新しいリリース(0.97)があり、ユーザーは現在One-JARアーカイブにパックしています。 http://one-jar.sourceforge.net
Ference Hechlerは、Eclipseエクスポートウィザードを使用してEclipse内でいくつかの素晴らしい作業も行いました。Eclipseの作業が成長したFatJar/One-JARで共同作業を行いました。アプローチとしては、それがどの程度うまく処理されるかはわかりませんが、お勧めできます。フレームワーク。