12

私が作成したアプリケーションは、いくつかのサードパーティの jar を使用しています。場合によっては、50kB から 1.7mB の jar ファイル全体のごく一部 (1 つまたは 2 つの関数呼び出しまたはクラス) のみが使用されることがあります。

瓶のサイズを小さくする最良の方法は何ですか。ソースをダウンロードして、必要なクラスだけで jar を構築する必要がありますか? これを自動化するのに役立つ既存のツールは何ですか?

ありがとうございました

編集 1: swingx-1.6.jar (1.4 MB)、set-3.6 (1.7 MB) glazedlists-1.8.jar (820kB) などのサードパーティの「公式」jar ファイルのサイズを小さくしたい。必要最小限のクラスのみを含む

編集 2: ライブラリがリフレクションを使用している場合、手動または proguard のようなプログラムを使用して jar を最小化することはさらに複雑になります。 proguard で難読化した後、Google Guice を使用したインジェクションが機能しなくなりました

別の投稿でのcletusによる回答は非常に良いJavaプログラムで使用されているクラスを決定する方法は?

4

3 に答える 3

5

プロガードはオプションです。未使用のクラスとメソッドを削除できます。これを使用して難読化することもできます。これにより、最終的な jar のサイズをさらに縮小できます。影響を受けるクラスを難読化しないように注意しないと、名前によるクラスのロードが壊れる可能性があることに注意してください。

私は Proguard が非常に効果的であることを発見しました - 最初は理解するのが少し不可解です. しかし、私は比較を提供するための同様の経験がありません。

于 2010-09-28T23:17:29.160 に答える
0

GenJarをAntタスクとして追加し、それを使用してJARを構築できます。図書館のホームページにあるように、

GenJarは、ディレクトリの内容だけでなく、クラスの依存関係に基づいてjarファイルを作成する特殊なAntタスクです。

あなたはSourceForgeでそれを見つけることができます。

于 2010-09-29T10:03:41.050 に答える
0

まず第一に、JAR ファイルから 1 つのクラスのみを使用する場合、これは、このクラスがその JAR の他のクラスを使用しないという意味ではありません。オープンソースの JAR を使用する場合のオプションは、その JAR のソースを取得し、それらをプロジェクトに添付し、不要なものを削除して、自分で変更をビルドすることです。

于 2010-09-29T09:48:22.247 に答える