从第三方库和jar中删除不必要的类



我需要从第三方jar中删除未使用的类。为什么我应该使用工具?

我已经试过使用ProGuard了。但是,它只从项目本身删除未使用的类,而库jar -第三方-始终保持不变。

你可以创建一个uber jar,然后使用ProGuard。将库类重新打包到jar中是一个挑战,但从你的问题的精神来看,你会更喜欢这样的uber jar。

正如其他评论者所评论的那样,你仍然需要小心那些通过被滥用和误解的反射机制加载的类。

@Joonas Pulakka是对的。但是,如果您仍然真的想这样做,并确保您的应用程序不会因为ClassNotFoundException而失败,那么使用选项-verbose:class运行您的应用程序,执行所有存在的用例,获取包含所有加载类的日志。然后获取第三方库中所有类的列表,并将库中从未加载过的所有类归档。然后创建一个只包含"需要的"类的备用jar文件,并祈祷:)

好运。

知道您正在使用什么类和库是一件好事,即使存在删除未使用的东西的风险(正如Peter指出的那样),携带任何类型的多余行李都是有成本的,您不应该只是不断积累。如果您使用反射,那么请掌握您使用它的目的,并系统地摆脱不需要的东西。您可以更好地理解精简代码库的好处。

Java只在类被使用时加载它们。删除类只会给您带来问题,而不会在运行时帮助您。36 MB的代码并不多,因为只会加载其中的一部分。你有多少内存?如果你通过慢速链接下载applet或Java WebStart应用程序,我可以想象你正在使用pack200(使jar更小),并且已经包含了最少的库。

相关内容

  • 没有找到相关文章

最新更新