Java 查找eclipse项目中使用的未使用的JAR

Java 查找eclipse项目中使用的未使用的JAR,java,eclipse,jar,Java,Eclipse,Jar,是否有任何插件/工具可用于浏览eclipse项目(或工作区)的类路径并突出显示任何未使用的JAR?是一个良好的开端 它可以自动识别孤立的罐子等等 唯一的限制是类中未定义的依赖项,例如依赖项注入框架配置文件中的依赖项 您还有其他选择/补充,例如: ,它依赖于通过检查真实对象的形状、大小或在空间中的相对位置来处理真实对象的能力。它提供了java包、类型和字段及其关系的“物理”视图,使它们更易于处理 :一个eclipse插件工具,用于查找不必要的(死的)公共java代码 您可以使用以下插件之一: 或

是否有任何插件/工具可用于浏览eclipse项目(或工作区)的类路径并突出显示任何未使用的JAR?

是一个良好的开端

它可以自动识别孤立的罐子等等

唯一的限制是类中未定义的依赖项,例如依赖项注入框架配置文件中的依赖项

您还有其他选择/补充,例如:

  • ,它依赖于通过检查真实对象的形状、大小或在空间中的相对位置来处理真实对象的能力。它提供了java包、类型和字段及其关系的“物理”视图,使它们更易于处理
  • :一个eclipse插件工具,用于查找不必要的(死的)公共java代码

您可以使用以下插件之一:
或者UCDetector对此没有帮助:它在JAR上不起作用。 对于classpathHelper,我无法找到一种简单的方法来列出孤立的罐子(顺便说一句,如果有人有这方面的教程,我很感兴趣)

所以,如果您也像我一样使用Maven,我会发现,我想与您分享这个解决方案。 仅键入:

mvn dependency:analyze
而且,您将立即得到依赖项中未使用的jar列表。
非常方便

我知道这是一个老问题,但如果其他人偶然发现了这一点,Eclipse会自己做这件事

导航到项目属性->Java代码样式->清理 选择Eclipse[内置],它将执行以下操作:

  • 使用声明类型更改对静态成员的非静态访问
  • 将对静态成员的间接访问更改为直接访问 (通过子类型访问)
  • 删除未使用的导入
  • 添加缺少的“@Override”批注
  • 将缺少的“@Override”批注添加到接口的实现中 方法
  • 添加缺少的“@Deprecated”批注
  • 去除不必要的铸件
  • 删除不必要的“$NON-NLS$”标记

我发现了一个非常快速和有趣的工具来实现这一目标:

只需解压缩程序并运行:

java -Xmx512m -jar tattletale.jar ~/myjavaproject/mydistribution output
这将生成一份非常令人印象深刻的报告,其中包含不同的要点(来自其网站的文本):

  • 确定JAR文件之间的依赖关系
  • 从类路径中查找缺少的类
  • 发现类/包是否位于多个JAR文件中
  • 如果同一个JAR文件位于多个位置,则为Spot
  • 包含每个JAR文件需要和提供的内容的列表
  • 验证类的SerialVersionId
  • 查找具有不同版本号的类似JAR文件
  • 查找没有版本号的JAR文件
  • 查找未使用的JAR归档文件
  • 识别密封/签名的JAR档案
  • 在JAR文件中查找类
  • 获取项目的OSGi状态
  • 删除黑名单API使用
  • 并为.WAR和.EAR档案生成相同的报告

非常感谢您提供的mvn依赖关系:分析的提示。它以一种非常简单的方式完成这项工作。在我看来,这比使用前面提到的其他工具要简单得多。请注意,
mvn dependency:analyze
可能会给出错误的否定:例如,如果依赖类是通过
class.newInstance()或
Constructor.newInstance()实例化的,则它无法发现依赖项
并通过界面进行操作。这是使用依赖项注入框架(如Spring)的项目中的常见场景。然而,这是一个很好的起点。这不是我想要的。我想找出项目中哪些罐子是不必要的。清理是一项不同(但仍然有用)的工作。干杯类似的问题和不同的答案@VonC提到的第一个链接似乎被移动了/broken@manocha_ak是的,关于工作青蛙的救济项目已经不复存在了。我已经恢复了该网站的web.archive.org链接。仍然无法获取该链接。你能单独或以其他方式把我送过来吗?@manocha_-ak我知道,但只保留了网页,没有保存档案。据我所知,那个项目已经结束了。谢谢。它似乎工作得很好。但是,它需要在编译的
.jars
上调用,而不是在
.java
文件上调用。