是否有用于从 java 应用程序的 jar 文件或一组 jar 文件中剔除未使用的 类 的工具
Are there tools for culling unused classes from a jar file or set of jar files for a java applicaton
因此,我们在许多生成 jar 文件和外部库的项目中拥有广泛的 java 代码库。我正在开发一个应用程序,该应用程序使用 class 路径中大量 jar 文件中的一组稀疏 classes。
因为我们要在存储空间有限的设备上加载应用程序,所以我想从 jar 文件集中剔除所有未使用的 classes,然后创建一个仅包含应用程序所需内容的 jar。
这是一个 运行 非常类似于传统 "link" 的过程,只包含实际引用的代码。
理想情况下,我可以指定一个 "Root" classes 的列表,例如包含应用程序的 "main" 和我知道的任何动态加载的项目以及资源和 运行 指定 class 路径上的一些工具,它将构建一个文件夹,其中包含 运行 应用程序所需的内容。
然后我可以为 运行 app/applet/servlet.
所需的尽可能小的 jar 收集结果
我可以设想一个自定义 "class loader",它将简单地生成一个列表,其中包含应用程序 运行 时加载的所有内容。 (即 class + class 路径中的源代码)如果能够 运行 应用程序中的所有代码路径,则可用于此目的。当然,如果存在平台或其他 运行 时间依赖项的动态加载,这将无法解决这些问题,但它会完成大部分工作。
谢谢。
其中一个工具是 ProGuard。
ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or higher, or for Java Micro Edition.
使用教程是 here。
因此,我们在许多生成 jar 文件和外部库的项目中拥有广泛的 java 代码库。我正在开发一个应用程序,该应用程序使用 class 路径中大量 jar 文件中的一组稀疏 classes。
因为我们要在存储空间有限的设备上加载应用程序,所以我想从 jar 文件集中剔除所有未使用的 classes,然后创建一个仅包含应用程序所需内容的 jar。
这是一个 运行 非常类似于传统 "link" 的过程,只包含实际引用的代码。
理想情况下,我可以指定一个 "Root" classes 的列表,例如包含应用程序的 "main" 和我知道的任何动态加载的项目以及资源和 运行 指定 class 路径上的一些工具,它将构建一个文件夹,其中包含 运行 应用程序所需的内容。
然后我可以为 运行 app/applet/servlet.
所需的尽可能小的 jar 收集结果我可以设想一个自定义 "class loader",它将简单地生成一个列表,其中包含应用程序 运行 时加载的所有内容。 (即 class + class 路径中的源代码)如果能够 运行 应用程序中的所有代码路径,则可用于此目的。当然,如果存在平台或其他 运行 时间依赖项的动态加载,这将无法解决这些问题,但它会完成大部分工作。
谢谢。
其中一个工具是 ProGuard。
ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or higher, or for Java Micro Edition.
使用教程是 here。