有没有工具可以从java应用程序的jar文件或一组jar文件中挑选出未使用的类



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

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

这就是运行一个非常类似于传统"链接"的过程,该过程只包括实际引用的代码。

理想情况下,我可以指定一个"根"类的列表,比如包括应用程序的"主"和我所知道的动态加载的任何东西以及资源等项目的列表,并在指定的类路径上运行一些工具,该工具将构建一个文件夹,其中包含运行应用程序所需的内容。

然后,我可以将结果放入运行app/applet/servlet所需的尽可能小的jar中。

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

谢谢。

ProGuard就是这样一个工具。

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

使用教程在这里。

最新更新