从maven2升级到maven3或者从maven3降级到maven2,M2_HOME环境变量改变后,在终端执行mvn -v,出现如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher
Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.classworlds.launcher.Launcher
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: org.codehaus.plexus.classworlds.launcher.Launcher. Program will exit.
如果你是linux系统,你可能是在/etc/profile、~/.bash_profile或~/.bashrc文件中配置了M2_HOME环境变量,当M2_HOME的值改变后,就算你执行了source /etc/profile操作,也会出现如上错误,这时你就需要重新打开一个终端或者重新登录才可以,如果你是Windows系统,重新打开一个cmd窗口,一般就可以了,所以说上诉错误的根本原因是两个版本的maven切换时,在同一个终端执行了mvn -v,而没有打开新的终端或者重新登录。