确定使用的库以减少JAR文件大小

时间:2010-12-16 12:29:52

标签: java jar htmlunit

我在某些程序中使用HtmlUnit并且我总是遇到这样的问题,即每当我使用它时,我必须添加从HtmlUnit网站下载的所有文件(库),这样我得到的jar文件总是10 MB。

这些是我添加的文件:

alt text

但是在我的大多数程序中,我只包括这个:

import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.RefreshHandler;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.*;

我通常只使用WebClient和HtmlElements(HtmlForm,HtmlTable等),所以我觉得很奇怪,我需要所有这些。

我的问题是,如果我可以减少所包含的库的数量,或者更好,我如何确定我所包含的哪些库根本没有被使用。

3 个答案:

答案 0 :(得分:3)

如果需要,是否真的要检查所有添加的库的所有类?

恕我直言,这是一项计划工作。一个流行的开源程序是ProGuard

通常,ProGuard称为混淆器(重命名类文件中的所有内容,以便难以理解反编译的类),但在使用 -dontobfuscate 参数时,可以在不使用模糊处理的情况下使用它。另外,我建议你也使用 -dontoptimize 参数。

如果您在大胖JAR上运行ProGuard,您将获得更小的JAR。

如果您有兴趣,我可以发布一个ant构建文件的一小部分,该文件显示如何配置和调用ProGuard。

答案 1 :(得分:1)

您不仅要考虑直接使用的类,还要考虑所有依赖项。你将不得不追逐整个对象图来弄清楚什么是未调用的。

答案 2 :(得分:1)

我知道JBoss Tattletale,但我自己没有尝试过。

请记住,只有在某些代码运行期间才能访问库(例如,取决于输入),因此很难确定是否需要库。

如果你摆脱了一些库,你的应用程序现在可以正常工作,但是在不同的输入上失败,或者在你的下一个版本中以不同的方式开始使用HtmlUnit时失败。现在10 MB并不是很多,所以也许摆脱一些罐子不值得这么麻烦。