用于删除Java项目中不必要的依赖项的工具

时间:2009-04-01 20:23:29

标签: java dependencies

我有一个Java项目,它的库目录中当前有很多JAR,这些JAR在构建时都包含在生成的包中。但是,我知道其中一些库从未在项目中引用过。

是否有可以搜索项目中未引用的库的工具?我想在这个意义上肯定有一些东西。

顺便说一句,一个Eclipse插件会很棒。

编辑:我选择使用ClassDep,因为这是唯一有效的建议。但是,我遇到了一些问题:请检查this question

6 个答案:

答案 0 :(得分:8)

请注意通过Class.forName()加载类并且未在清单文件中指定为依赖项的情况(有一个Depends-On:属性,但许多人没有指定它,这打破了这样的工具,当我使用这样的工具时,我的存在的祸根)。

答案 1 :(得分:4)

ClassDep(来自Sun,在Jini开发工具包中)将为您完成此任务。

答案 2 :(得分:2)

ClassPathHelper可以帮助您。

特别是“Not on Classpath View”

Not on Classpath

  

此视图扫描不在类路径上的jar(但在当前项目下)。它提供了可用但不在类路径上的包和类的基本浏览。这在尝试构建类路径时很有用,因为您可以快速浏览缺少的类以查看哪些罐包含它们。

答案 3 :(得分:1)

不是eclipse插件,但我相信ProGuard的“缩小”功能正是您所寻找的。

答案 4 :(得分:1)

我写了一个小的eclipse插件,从工作区中获取现有的java project。对于项目classpath entry raw classpath中的每个removes来说,它来自项目原始类路径和builds the project。如果没有严重性错误为problemmarkers appear on the project,则会从项目原始类路径中永久删除类路径条目。

我无法分享该插件,但是使用上面给出的api链接自己实现它并不是太多工作。

答案 5 :(得分:0)

您也无法判断您不导入的JAR是否需要依赖项的依赖项。例如,如果您使用Spring,它会带有自己的依赖项,即使您没有在代码中导入或调用这些类。我对ProGuard一无所知 - 是否检查了这些情况?