当我尝试运行mvndependency:tree时,我得到:java.lang.NoClassDefFoundError:org / sonatype / aether / version / VersionConstraint

问题描述

我不知道为什么会这样。我也尝试删除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版本更新到至少3.0.x +或3.1.x + How to access Bitbucket using app password

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

其他报告see here声称使用Maven 3.3.0,因此在任何情况下,请首先尝试使用最新的稳定Maven(您可以从here获取)

侧面问题:您正在开发Maven插件吗?通常,您不应该在pom.xml中声明对插件的依赖性