Maven错误:无法find或加载主类org.codehaus.plexus.classworlds.launcher.Launcher

我已经在Windows 7上安装了最新的maven-3.0.4
安装细节如下:
安装path:

 C:\apache-maven-3.0.4 

环境variables是:

 M2_HOME C:\apache-maven-3.0.4\apache-maven\src JAVA_HOME C:\Program Files\Java\jdk-1.7.0_04 

添加的pathvariables是:

 %M2_HOME%\bin;%JAVA_HOME%\bin; 

在命令窗口中显示如下:

 C:\>java -version java version "1.7.0_04" Java(TM) SE Runtime Environment (build 1.7.0_04-b22) Java HotSpot(TM) Client VM (build 23.0-b21, mixed mode, sharing) C:\>mvn -version Error: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher 

这是我的电脑上安装maven的唯一版本,许多博客上提到的删除前一个M2_HOME环境variables的解决scheme是无效的。

我已经阅读并尝试了博客上提供的所有解决scheme,例如:

  • oracle博客 ,
  • stackoverflow问题 ,
  • 另一个堆栈问题 ,
  • 一些博客 ,

但仍然无法得到它。 我可能会在这件事上失踪? 提前致谢。

我也遇到了这个问题,并且发现了这篇文章。 对于Maven3,将我的环境variables名称从M2_HOME更改为M3_HOME的伎俩。 我在使用JDK 1.7运行OSX 10.9的Mac上。 希望这可以帮助。

注意:如果已经设置,请删除M2_HOME。 例如: unset M2_HOME

我遇到了同样的问题,能够通过仔细重做环境variables来解决问题:

  • M2_HOME
  • M2
  • JAVA_HOME

另外,我把它们全部变成了系统variables,而不是像Maven指令所说的用户variables。 当你

 echo %Path% 

确保你可以看到完全展开的%M2%和%JAVA_HOME%variables,即:

 C:\Users\afairchild>echo %Path% C:\Program Files\Apache Software Foundation\apache-maven-3.0.4\bin;C:\Program Files\Java\jdk1.7.0_09\bin; [etc] 

在两个不同的Ubuntu 12.04安装上有这个问题,尽pipe安装是由apt-get完成的。 问题是M2_HOME。

修正了:

 export M2_HOME=/usr/share/maven 

即使这个问题已经回答了,我想补充一点,如果你正在得到上面提到的错误,请确保你已经下载了二进制文件

如果您是高级用户,并且您知道如何处理该源文件,则应该只下载该源文件。

我有相当一部分人下载错误的文件,老人和大三学生

这听起来像你安装(提取)源文件,而不是根据您的path信息的二进制文件。 尝试安装二进制代码,并遵循其他海报答案。

那么,我有这个问题,看到这个post后,特别是khmarbaise的答案,我注意到, M2_HOME

 D:\workspace\apache-maven-3.1.0-bin\apache-maven-3.1.0\bin 

然后我把它变成了

 D:\workspace\apache-maven-3.1.0-bin\apache-maven-3.1.0 

我想提一下,我使用的是Windows 7(x64)

您应该将M2_HOME的位置更改为以下内容:

 set M2_HOME=C:\apache-maven-3.0.4\apache-maven 

此外,JDK的安装看起来更像是JRE而不是JDK。 对于Maven,您需要JDK而不是JRE。

更高版本的Maven解决scheme非常简单。 我在OS X ElCap 10.11.6上升级到Maven 3.3.9。 我有同样的问题,错误“ Could not find ...org.codehaus.plexus... ”。 这里提供的链接在McKamey的评论中提供了解决scheme – 只需删除M2_HOME( unset M2_HOME )即可。 一旦我尝试了这一切,它都按预期工作。

这可以通过访问Maven install page来确认:“将创build的目录apache-maven-3.3.9的bin目录添加到PATH环境variables” – 完全没有提到M2_HOME或M3_HOME。

我在我的Mac OSX上遇到了类似的问题。 经过一系列的尝试和错误的尝试,我最终解决了这个问题。

我的~/.bash_profile看起来像这样

 export M2_HOME=/Users/xyz/maven-3.x/bin export PATH=$PATH:$M2_HOME 

当我试图从terminalecho M2_HOME ,它显示了正确的path,但是当我试图启动像mvn cleanmvn install这样的maven命令时,它总是给出同样的问题

无法find或加载主类org.codehaus.plexus.classworlds.launcher.Launcher

我通过改变我的M2_HOME来解决这个问题

 export M2_HOME=/Users/xyz/maven-3.x export PATH=$PATH:$M2_HOME/bin 

瞧! 它开始工作! 只需将/bin从M2_HOME的位置移动到PATH前面即可

我遇到过同样的问题。 我有Windows XP的盒子,当我在命令行提示符下键入mvn -version时,我得到了可怕的错误信息

 "Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher" 

我确认我的M2_HOMEvariables被设置为Maven在PC上安装的path,并且echo %path%证实Maven在我的path中。

当我偶然发现我的解决scheme(我说我的解决scheme,因为我知道这可能不会是每个人都得到相同的错误的解决scheme),我一直在寻找一个解决scheme几个小时。

我复制了分配给我的M2_HOMEvariables的path。 我打开了一个cmd窗口并键入cd并粘贴了从我的M2_HOMEvariables获得的path。 那时我知道path是正确的,因为path显示在窗口中。 在这一点上,我进入dir命令,令我惊讶的是,我得到了错误文件未find。

我通过资源pipe理器去了那个path,果然有文件存在。 我注意到文件夹已经淡出,但我可以访问它们,并看到每个文件夹(我有我的电脑pipe理员权限)内的文件。 我查看了Maven的父文件夹的属性,并看到“隐藏”框被选中。 我取消了检查,并申请并再次尝试我的dir命令成功。

接下来我再次尝试了mvn –version命令,但这一次我收回了预期的结果。

 C:\>mvn -version Apache Maven 3.0.3 (r1075438; 2011-02-28 11:31:09-0600) Maven home: C:\Program Files\apache-maven-3.0.3 Java version: 1.5.0_16, vendor: Sun Microsystems Inc. Java home: C:\Java\jdk1.5.0_16\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows xp", version: "5.1", arch: "x86", family: "windows" 

最后我创build了一个jar和war文件,我的web应用程序在我的本地Tomcat上成功运行。

我希望这可以帮助你们中的一些人。

除了@khmarbaise指出的,我想你错误地input了你的JAVA_HOME。 如果你已经安装在默认位置,那么jdk和1.7.0_04之间应该没有“ – ”(连字符)。 所以会是的

 JAVA_HOME C:\Program Files\Java\jdk1.7.0_04 

对于可能遇到这个问题的其他人,请不要忘记检查〜/ .mavenrc是否为M2_HOME或JAVA_HOME设置。

尝试下载二进制zip(例如Maven 3.0.5(Binary zip)),而不是官方maven站点中的完整源代码。 还要确保命令行能够识别java和javac命令。 我注意到Maven Source zip没有在lib文件夹中包含任何库,但是Binary zip在引导文件夹中有它们,它具有plexus-classworlds-2.4.jar。 也许问题出在这些库的缺席。 无论如何,它帮助了我,所以我的M2_HOME是:C:\ Program Files文件\ Java \ apache-maven-3.0.5和PATH我把:C:\ Program Files \ Java \ apache的 – maven – 3.0.5 \斌。

我在我的centOS中发现这个问题是由“Oracle Java被gcjreplace”引起的,之后把默认的java改为“Oracle Java”,问题解决了。

 alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- * 1 /usr/lib/jvm/jre-1.5.0-gcj/bin/java + 2 /usr/java/jdk1.7.0_67/bin/java 

它看起来像你已经安装了源文件(因为src只在源文件中,我们不需要它)。 尝试从那里安装二进制文件 。 然后在那里设置环境variables。 这对我有效。 我相信它也可以为你工作。

我想你下载错误的版本。 我刚才遇到这个问题,search和search后没有任何方法工作。 最后,我发现我下载的maven是Source zip压缩文件 。 在我更改为二进制压缩文件后 ,一切都会好起来的。

只要确保你已经下载了二进制zip压缩文件(apache-maven-3.5.0-bin.zip)而不是Source zip压缩文件。 然后将创build的目录apache-maven-3.5.0的bin目录添加到PATH环境variables中。

即使使用正确的环境variables设置,如果只将bin目录复制到安装目录,也会出现完全相同的错误。 它使工作得很好,新手卡住了。

我也面临类似的问题。 但是在我的情况下,我在pathvariables中使用了apache-maven-3.3.3-src文件夹。 后来我纠正了这些文件夹的正确pathapache-maven-3.3.3-bin。 这解决了这个问题。 我不是说这是同样的错误报告在这里,但这种方式也可以得到这个错误,并纠正它。 这就是我想在这里说的。

这是设置Maven时的常见问题。 所有你需要做的是:

  1. M2_HOME: – D:\ apache-maven-2.0.11
  2. M2: – D:\ apache-maven-2.0.11 \ bin
  3. path: – 附加;%M2%

M2_HOME&M2: – 需要声明为系统variables而不是USER / ADMINvariables。

path: – 这可以是系统variables或USER / ADMINvariables[path]。 最好是系统variables。

一旦你仔细的做了这3个variables的设置,你可以validationMaven的安装如下。

CMD提示: –


C:\ Documents and Settings \ ADMIN> mvn –version


输出: –


Apache Maven 2.0.11(r909250; 2010-02-12 11:25:50 + 0530)Java版本:1.6.0_22 Java home:C:\ Program Files \ Java \ jdk1.6.0_22 \ jre默认语言环境:en_US,平台编码:Cp1252操作系统名称:“windows xp”版本:“5.1”arch:“x86”系列:“windows”

谢谢。

旁边也许有用,但也许太有症状的答案,这是一个试图帮助find问题的原因。

Maven是一个命令行的java工具。 这意味着,它不是一个独立的二进制文件,它是一个java .jar的集合,由一个jvm(在windows上的java.exe ,在linux上的java )解释。

mvn命令是一个脚本。 在Windows上,它是一个名为mvn.cmd的脚本,在Linux上是一个shell脚本。 因此,如果你写: mvn install ,会发生什么情况:

  1. 为实际调用脚本调用命令解释程序( /bin/shcmd.exe
  2. 此脚本设置所需的环境variables
  3. 最后,它调用一个包含mavenfunction的所需类path的java解释器。

问题是(2)。 幸运的是,这个脚本简单,非常简单。 对于一个java程序员来说,debugging20行左右的脚本应该不是一个大麻烦,即使它是一点点外星人的语言。

在linux上,你可以debuggingshellcript给你的shell解释器(最可能是bash )提供-x标志。 在Windows上,您必须find一些其他方式来debuggingcmd.exe脚本。 所以,而不是mvn install ,给命令bash -x mvn install

结果如:

 + '[' -z '' ']' + '[' -f /etc/mavenrc ']' + '[' -f /home/picsa/.mavenrc ']' + cygwin=true + darwin=false 

没有那么多东西

 + MAVEN_PROJECTBASEDIR='C:\peter\bin' + export MAVEN_PROJECTBASEDIR + MAVEN_CMD_LINE_ARGS=' ' + export MAVEN_CMD_LINE_ARGS + exec '/cygdrive/c/Program Files/Java/jdk1.8.0_66/bin/java' -classpath 'C:\peter/boot/plexus-classworlds-*.jar' '-Dclassworlds.conf=C:\peter/bin/m2.conf' '-Dmaven.home=C:\peter' '-Dmaven.multiModuleProjectDirectory=C:\peter\bin' org.codehaus.plexus.classworlds.launcher.Launcher Fehler: Hauptklasse org.codehaus.plexus.classworlds.launcher.Launcher konnte nicht gefunden oder geladen werden 

最后,你可以很容易地testing哪个环境variables变坏了,你可以很容易地修复你的脚本(或者设置它所需要的)。