【问题标题】:When I am trying to run mvn dependency:tree , I am getting : java.lang.NoClassDefFoundError: org/sonatype/aether/version/VersionConstraint当我尝试运行 mvn dependency:tree 时,我得到: java.lang.NoClassDefFoundError: org/sonatype/aether/version/VersionConstraint
【发布时间】:2020-10-28 10:14:22
【问题描述】:

我不知道为什么会这样。我也尝试删除我的 m2 存储库。

我也尝试了各种版本的 maven 插件(2.8)。

<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.1.1</version>
</dependency>
    

这是完整的堆栈跟踪:

 Error injecting: org.apache.maven.shared.dependency.graph.internal.Maven3DependencyGraphBuilder
java.lang.NoClassDefFoundError: org/sonatype/aether/version/VersionConstraint
at java.lang.Class.getDeclaredMethods0 (Native Method)
at java.lang.Class.privateGetDeclaredMethods (Class.java:2701)
at java.lang.Class.getDeclaredMethods (Class.java:1975)
at com.google.inject.spi.InjectionPoint.getDeclaredMethods (InjectionPoint.java:766)
at com.google.inject.spi.InjectionPoint.getInjectionPoints (InjectionPoint.java:683)
at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields (InjectionPoint.java:378)
at com.google.inject.internal.ConstructorBindingImpl.getInternalDependencies 
          (ConstructorBindingImpl.java:181)


Caused by: java.lang.ClassNotFoundException: org.sonatype.aether.version.VersionConstraint
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass (SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass (ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:239)
at java.lang.Class.getDeclaredMethods0 (Native Method)
at java.lang.Class.privateGetDeclaredMethods (Class.java:2701)
at java.lang.Class.getDeclaredMethods (Class.java:1975)
at com.google.inject.spi.InjectionPoint.getDeclaredMethods (InjectionPoint.java:766)
at com.google.inject.spi.InjectionPoint.getInjectionPoints (InjectionPoint.java:683)
at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields (InjectionPoint.java:378)

【问题讨论】:

  • 将 maven 插件作为依赖项是完全错误的。而是在 pluginManagement 中定义一个插件。同时显示你使用的命令,以及你使用的 JDK 版本、Maven 版本等。
  • 我不需要 maven 插件,所以我删除了它。我正在使用 mvn dependency:tree 、 jdk 11.0.5 和 maven 3.5.4
  • 您使用了哪个版本的 maven-dependency-plugin,因为它不是错误输出的一部分...通常会被注销...最好使用mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.2:tree 来确定使用最新版本的插件....

标签: java spring-boot maven sonatype maven-dependency-plugin


【解决方案1】:

更新 Maven 版本,至少到 3.0.x+ 或 3.1.x+ see here

这个错误是由 Maven 3.1-alpha-1 从 Sonatype 迁移引起的 Aether 到 Eclipse Aether (MNG-5354),这是一个不兼容的更改 对于一些插件。

其他报告here声称使用Maven 3.3.0,所以无论如何,请先尝试使用最新的稳定maven(您可以从here获得)

附带问题:您正在开发 maven 插件吗?通常你不应该在你的 pom.xml 中声明对插件的依赖

【讨论】:

  • 我没有开发任何 maven 插件。我只是在网上搜索以解决此问题时在某个地方找到它
  • @GKr297 您正在使用的某些插件与 maven 运行时之间存在版本不匹配。尽可能更新到最新版本
【解决方案2】:

您可以使用旧版本的插件来解决,如错误日志中调用的official page 所示:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:tree

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 2019-08-10
    • 2022-10-04
    • 2020-10-20
    • 2017-07-16
    相关资源
    最近更新 更多