一、问题
错误如下
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/PlexusContainer
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3578)
at java.base/java.lang.Class.getMethodsRecursive(Class.java:3719)
at java.base/java.lang.Class.getMethod0(Class.java:3705)
at java.base/java.lang.Class.getMethod(Class.java:2393)
at org.codehaus.plexus.classworlds.launcher.Launcher.getEnhancedMainMethod(Launcher.java:169)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:262)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:226)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:407)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:348)
Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.PlexusContainer
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)
二、解决
1、 linux / Mac 系统
我们会在 /etc/profile 、~/.bash_profile 或 ~/.bashrc 文件中配置 M2_HOME 环境变量,当M2_HOME的值改变后,就算执行了 source /etc/profile 操作,也会出现如上错误,这时需要重新打开一个终端或者重新登录才可以。
2、Windows系统
一般重新打开一个cmd窗口就可以了,所以说上诉错误的根本原因是两个版本的maven切换时,在同一个终端执行了mvn -v,而没有打开新的终端或者重新登录。