是否能够在运行时调用所有Java类?

时间:2015-12-08 10:45:30

标签: java jvm

完成项目后,我想删除所有未使用的类,以减少打包时jar文件的大小。

我正在使用IntelliJ,它可以帮助我检测未使用的类,但它包括一些类只能通过反射调用(仅限运行时)。而且,它无法检测外部库中未使用的类。

一件重要的事情,我想删除外部库中未使用的类。例如,当我使用来自Google Guava的BiMap时,我必须包含Guava lib,但我只想使用BiMap,包括整个Guava使我的jar变得更大

所以,我反过来思考,而不是找到未使用的类,我想知道运行时使用/调用所有类(我将手动删除未使用的类/包)。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

考虑使用像Proguard(http://proguard.sourceforge.net/)这样的工具来执行此操作

答案 1 :(得分:0)

我不确定如何将jar文件的内容限制为仅引用的Java类。在动态加载类时,您可能会遇到问题。

Guava在他们的网站上解释了如何使用ProGuard在构建中包含一部分Guava:https://github.com/google/guava/wiki/UsingProGuardWithGuava