查找maven依赖项中的所有导入?

问题描述 投票:0回答:1

我正在将 Maven 项目更新为 Spring Boot 3 和 Java 21。这样做时,我在运行时收到此异常:

java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?]
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[?:?]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?]
    at java.base/java.lang.Class.forName0(Native Method) ~[?:?]
    at java.base/java.lang.Class.forName(Class.java:534) ~[?:?]
    at java.base/java.lang.Class.forName(Class.java:513) ~[?:?]
    at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114) ~[?:?]
    ... 32 more
Wrapped by: java.lang.TypeNotPresentException: Type javax.servlet.http.HttpServletRequest not present

我没有在我的项目中使用

javax.servlet.http.HttpServletRequest
,所以我认为这是在一个过时的 JAR 中。我认为有一种方法可以运行 mvn dependency:tree 或 Eclipse/IJ 插件,显示每个依赖 JAR 使用的所有导入,这样我就可以看到 JAR xyz 执行此问题类型的导入并排除或更新它.

对于一般情况,我如何实现这一点 - 递归地查找我的项目作为依赖项引用的每个 JAR 的类?

maven dependencies
1个回答
0
投票

我能够按如下方式完成此任务。

  1. 使用 Maven 构建我的应用程序。
  2. 找到生成的 JAR。
  3. 在Java反编译器JD中打开JAR。
  4. 使用“保存所有源”选项,这会生成所有依赖 JAR 的目录。
  5. 编写一个脚本,对每个 JAR 执行 foreach 操作并运行 unar 命令。
  6. grep -r 用于生成 Java 文件中的有问题的导入。
© www.soinside.com 2019 - 2024. All rights reserved.