如何确定在应用程序中使用了哪些 JAR
现有应用程序的类路径中有大量的 JAR 文件。最初必须有人添加了所有JAR才能确定。一些 JAR 显然没有被使用,我们已经删除了一些不需要的 JAR,而不会造成任何问题。
如何确定正在使用哪些 JAR 以及哪些 JAR 是不需要的(除了试错法)?
现有应用程序的类路径中有大量的 JAR 文件。最初必须有人添加了所有JAR才能确定。一些 JAR 显然没有被使用,我们已经删除了一些不需要的 JAR,而不会造成任何问题。
如何确定正在使用哪些 JAR 以及哪些 JAR 是不需要的(除了试错法)?
Tattletale是一个很好的工具。它适用于字节码,因此有可能某些类是通过反射使用的,并且不会出现在报告中。
此处(链接不再有效)是一个示例报告。如您所见,您只需要拥有要查找的功能“未使用的JAR”。
请注意,试错本身可能是一个问题,特别是如果应用程序动态加载类(例如),因为删除JAR可能不会阻止应用程序启动并且(显然)工作正常,但是如果找不到目标类,它以后可能会失败。Class.forName
此外,有许多工具可用于分析Java应用程序并找出依赖关系(我自己也使用过依赖关系查找器,尽管不完全用于此目的),但是请注意,它们中的大多数也无法找到如上所述动态加载的类。