如何检查所需的库?

时间:2010-07-22 12:29:09

标签: java

我开发了一个包含很多库的Web应用程序,如Spring,Apache CXF,Hibernate,Apache Axis,Apache Common等等。这些框架中的每一个都带有许多* .jar库。

对于开发,我简单地将所有提供的库添加到我的类路径中。

对于部署而言,并非所有这些库都是必需的,所以有一种快速方法可以检查我的源代码使用的所有必需库(* .jar)吗?

4 个答案:

答案 0 :(得分:3)

如果您将项目移动到使用Maven,这样的事情会变得更容易:

mvn dependency:analyze 
mvn dependency:tree

答案 1 :(得分:1)

对于您的示例,Maven + IDE +漂亮的依赖关系图可以帮助分配。

See an example of this:通过这种方式弄清楚项目中发生的事情要容易得多,这样你就不需要在项目中添加“所有交付的库” - 只需要它。

答案 2 :(得分:0)

  

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

答案 3 :(得分:0)

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

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

    1. 请阅读您正在使用的所有第三方软件包的文档。每个包都应该告诉你它的依赖性。

    2. 运行您的应用程序,看看是否有任何ClassNotFoundExceptions。如果这样做,那么使用Control-Shift-T来确定该类来自哪个jar并将其添加到类路径中。重复直到您的项目运行而不抛出任何ClassNotFoundExceptions。

    3. #2的问题在于你并没有真正知道你已经解决了所有的依赖关系,因为你无法模拟项目可能采用的每个可能的执行路径。