最小化jar依赖项大小

我写的一个应用程序使用了几个第三方jar子。 有时只使用整个50kB到1.7mB jar的一小部分 – 一个或两个函数调用或类。

什么是减少jar子大小的最佳方法。 我应该下载源代码并构建一个只需要我需要的类的jar吗? 哪些现有工具可以帮助实现此function(例如,我简要介绍了http://code.google.com/p/jarjar/ )?

谢谢

编辑1:我想降低我的第三方’官方’jar子的大小,如swingx-1.6.jar(1.4 MB),set-3.6(1.7 MB)glazedlists-1.8.jar(820kB)等等,这样他们就可以了只包含我需要的最低级别

编辑2:如果库使用reflection,手动或使用程序如proguard最小化jar会更复杂。 在使用proguard进行模糊处理后,使用google guice注入不再有效

cletus对另一篇文章的回答非常好如何确定Java程序使用哪些类?

Proguard是一种选择。 它可以消除未使用的类和方法。 您也可以使用它进行混淆,这可以进一步减小最终jar的大小。 请注意,除非注意保持受影响的类别不被混淆,否则按名称加载类可能会中断。

我发现Proguard非常有效 – 从一开始就可以有点神秘。 但我没有任何相似的经验提供比较。

首先,如果您只使用JAR文件中的一个类,这并不意味着此类不使用该JAR中的其他类。 如果您使用开源JAR,那么您的选择是获取该JAR的源,将它们附加到您的项目,删除不必要的东西并自己构建更改。

您可以将GenJar添加为Ant任务并使用它来构建JAR。 正如它在图书馆的主页上所说的那样,

GenJar是一个专门的Ant任务,它根据类依赖性而不是简单的目录内容来构建jar文件。

你可以在SourceForge上找到它。