繁体   English   中英

是否有用于从 jar 文件或 Java 应用程序的一组 jar 文件中剔除未使用类的工具

[英]Are there tools for culling unused classes from a jar file or set of jar files for a java applicaton

因此,我们在许多制作 jar 文件和外部库的项目中拥有广泛的 Java 代码库。 我正在开发一个应用程序,该应用程序使用类路径中大量 jar 文件中的一组稀疏类。

因为我们在存储空间有限的设备上加载应用程序,所以我想从 jar 文件集中剔除所有未使用的类,然后创建一个仅包含应用程序所需内容的 jar。

这是运行一个非常类似于传统“链接”的过程,它只包含实际引用的代码。

理想情况下,我可以指定一个“Root”类的列表,例如包括应用程序的“main”和我知道的任何动态加载的东西以及诸如资源之类的项目,并在指定的类路径上运行一些工具,这将构建一个文件夹需要运行应用程序。

然后,我可以为运行 app/applet/servlet 所需的尽可能小 jar 生成该结果。

我可以设想一个自定义的“类加载器”,它可以简单地生成应用程序运行时加载的所有内容的列表。 (即类+ 类路径中的源代码)如果能够运行应用程序中的所有代码路径,则可用于此目的。 当然,如果有平台或其他运行时依赖项的动态加载,这不会涵盖这一点,但它会完成大部分工作。

谢谢。

ProGuard就是这样一种工具。

ProGuard 是一个免费的 Java 类文件压缩器、优化器、混淆器和预验证器。 它检测并删除未使用的类、字段、方法和属性。 它优化字节码并删除未使用的指令。 它使用无意义的简短名称重命名剩余的类、字段和方法。 最后,它会针对 Java 6 或更高版本或 Java Micro Edition 预验证已处理的代码。

使用教程在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM