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 clean
或mvn 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_HOME
variables被设置为Maven在PC上安装的path,并且echo %path%
证实Maven在我的path中。
当我偶然发现我的解决scheme(我说我的解决scheme,因为我知道这可能不会是每个人都得到相同的错误的解决scheme),我一直在寻找一个解决scheme几个小时。
我复制了分配给我的M2_HOME
variables的path。 我打开了一个cmd窗口并键入cd并粘贴了从我的M2_HOME
variables获得的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时的常见问题。 所有你需要做的是:
- M2_HOME: – D:\ apache-maven-2.0.11
- M2: – D:\ apache-maven-2.0.11 \ bin
- 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
,会发生什么情况:
- 为实际调用脚本调用命令解释程序(
/bin/sh
或cmd.exe
) - 此脚本设置所需的环境variables
- 最后,它调用一个包含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变坏了,你可以很容易地修复你的脚本(或者设置它所需要的)。