Java 如何检查所需的库?

Java 如何检查所需的库?,java,Java,我正在开发一个包含很多库的web应用程序,比如Spring、ApacheCXF、Hibernate、ApacheAxis、ApacheCommon等等。这些框架中的每一个都附带了许多*.jar库 对于开发,我简单地获取所有交付的库,并将它们添加到我的类路径中 对于部署,并非所有这些库都是必需的,那么是否有一种快速的方法来检查我的源代码所使用的所有必需的库(*.jar) 遍历Java类文件 目录并生成设计 每个Java包的质量指标。 JDepend允许您自动 衡量设计的质量 就其可扩展性而言, 可

我正在开发一个包含很多库的web应用程序,比如Spring、ApacheCXF、Hibernate、ApacheAxis、ApacheCommon等等。这些框架中的每一个都附带了许多*.jar库

对于开发,我简单地获取所有交付的库,并将它们添加到我的类路径中

对于部署,并非所有这些库都是必需的,那么是否有一种快速的方法来检查我的源代码所使用的所有必需的库(*.jar)

遍历Java类文件 目录并生成设计 每个Java包的质量指标。 JDepend允许您自动 衡量设计的质量 就其可扩展性而言, 可重用性和可维护性 管理包依赖项 有效地


如果您将项目迁移到使用Maven,则这些事情会变得更容易:

mvn dependency:analyze 
mvn dependency:tree

例如,Maven+IDE+nice依赖关系图可以帮助分配


:通过这种方式可以更容易地了解项目中发生了什么,而且您不需要向项目中添加“所有已交付的库”-只需添加所需的库。

因此,作为一种快速、肮脏且可能效率低下的方式,您可以在Eclipse中尝试:

  • 创建项目的两个副本
  • 在项目副本2中,从类路径中删除所有JAR
  • 选择一个现在有错误的源文件,因为它无法解析类引用。选择一个未解析的类并记下它的完全限定类名
  • 执行Control-Shift-T并定位未解析的类。您应该能够看到它包含在哪个jar中,因为所有的jar仍然在project copy#1的类路径中
  • 将包含此未解析类的jar添加回项目副本2中的类路径中,然后重复步骤3和4,直到解析所有类引用
  • 不幸的是,您还没有完成,因为jar文件本身可能也有依赖项。解决这一问题的两种方法:

  • 请阅读您正在使用的所有第三方软件包的文档。每个包都应该告诉您它的依赖项是什么

  • 运行应用程序,查看是否有ClassNotFoundException。如果您这样做,那么使用Control-Shift-T找出该类来自哪个jar,并将其添加到您的类路径中。重复此操作,直到项目运行时不抛出任何ClassNotFoundException


  • #2的问题在于,您并不知道自己已经解决了所有依赖关系,因为您无法模拟项目可能采用的所有可能的执行路径。

    出于好奇,Maven如何解决源于类的编程加载的依赖关系?我猜不是。不要偏离你的答案,我相信这会节省很多时间。我只是说…没有什么真正的替代品可以代替阅读您正在使用的第三方库的文档。