我需要从第三方JAR中删除未使用的类。为什么我应该使用工具?
我已尝试使用ProGuard。但是,它只从项目本身中删除未使用的类,但库罐 - 第三方 - 始终保持不变。
答案 0 :(得分:5)
您可以创建一个超级jar然后使用ProGuard。将库类重新打包到罐子中将是一个挑战,但从你的问题的精神来看,你会更喜欢超级罐。
正如其他海报所评论的那样,你仍然需要注意通过这么多被滥用和误解的反思机制加载的类。
答案 1 :(得分:1)
@Joonas Pulakka是对的。但是如果您仍然真的想要这样做并确保您的应用程序不会因ClassNotFoundException
使用选项-verbose:class运行您的应用程序而失败,请执行所有存在的用例,获取包含所有已加载类的日志。然后列出您的第三方库的所有类,并从库中归档所有从未加载过的类。然后创建只包含“必需”类的替代jar文件并祈祷:)
答案 2 :(得分:0)
了解您正在使用的类和库是一件好事,即使有风险(如Peter指出的那样)去除未使用的东西,携带任何类型的超重行李也会有成本,而且你不应该这样做。不要累积。如果你使用反射,那么就可以处理你正在使用的反射,并系统地摆脱你不需要的东西。更好理解的更精简的代码库有好处。
答案 3 :(得分:-6)
Java仅在使用时加载类。删除类只会导致问题,并且在运行时无法帮助您。只有一部分代码将被加载,36 MB的代码并不多。你有多少记忆?大多数PC目前至少有2000 MB如果您通过慢速链接下载applet或Java WebStart应用程序,我想你会使用pack200(使jar变小)并且已经包含了最少的库。