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

时间:2012-06-20 11:08:27

标签: java windows maven

我在 Windows 7 上安装了最新的maven-3.0.4
安装细节如下:
安装路径:

C:\apache-maven-3.0.4  

环境变量是:

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

添加的路径变量是:

%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环境变量的解决方案无效。

我已阅读并尝试了博客中提供的所有解决方案,例如:

但仍然无法达到目标。在这件事中我可能会缺少什么?提前致谢。

30 个答案:

答案 0 :(得分:129)

我也遇到了这个问题,并找到了this文章。对于Maven3,将我的环境变量名称从M2_HOME更改为M3_HOME就可以了。我在使用JDK 1.7运行OSX 10.9的Mac上。希望这会有所帮助。

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

答案 1 :(得分:60)

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

  • M2_HOME
  • M2
  • JAVA_HOME

另外,我将它们全部设为系统变量,而不是像Maven说明那样的用户变量。当你

echo %Path%

确保您可以看到%M2%和%JAVA_HOME%变量完全展开,即:

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]

答案 2 :(得分:52)

即使问题已经回答,我想补充一点,如果您收到上述错误,请确保已下载二进制文件

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

我有相当多的人下载错误的文件,老年人和青少年

答案 3 :(得分:47)

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

修正:

export M2_HOME=/usr/share/maven

答案 4 :(得分:19)

听起来您根据路径信息安装(提取)了源文件而不是二进制文件。尝试安装二进制文件,然后按照其他海报回答。

答案 5 :(得分:19)

我认为由于从Maven站点下载SRC而不是BINARY而导致此错误。请务必下载二进制邮箱。

因为以下路径,只有在下载SRC时才能获得:

  

M2_HOME C:\ apache-maven-3.0.4 \ apache-maven \ src

enter image description here

答案 6 :(得分:13)

好吧,我遇到了这个问题,看到这篇文章,特别是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)

答案 7 :(得分:5)

Maven更高版本的解决方案很简单。我在OS X ElCap,10.11.6并升级到Maven 3.3.9。我遇到了同样的错误问题" Could not find ...org.codehaus.plexus..."。提供的链接here在McKamey的评论中提供了解决方案 - 只需删除M2_HOME(unset M2_HOME)。一旦我尝试了,这一切都按预期工作。

这可以通过访问Maven install page来确认:"将创建的目录apache-maven-3.3.9的bin目录添加到PATH环境变量" - 根本没有提到M2_HOME或M3_HOME。

答案 8 :(得分:4)

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

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

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

答案 9 :(得分:3)

我在mac OSX上遇到了类似的问题。经过一系列的尝试和错误尝试后,我终于解决了它。

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

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

当我从终端尝试echo M2_HOME时,它向我显示了正确的路径但是当我尝试触发任何maven命令(如mvn cleanmvn install时)时,它总是给出相同的问题

  

无法找到或加载主类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

前面

答案 10 :(得分:2)

我有同样的问题。我有Windows xp框,当我在命令行提示符下键入mvn -version时,我收到了可怕的错误消息

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

我确认我的M2_HOME变量设置为在PC上安装Maven的路径,echo %path%确认Maven在我的路径中。

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

我复制了分配给M2_HOME变量的路径。我打开了一个cmd窗口并输入了cd并粘贴了我从M2_HOME变量中获取的路径。那时我知道路径是正确的,因为路径显示在窗口中。此时我输入了dir命令,令我惊讶的是,我收到错误File Not Found。

我通过资源管理器访问了该路径,确定存在文件。我注意到文件夹已淡出,但我可以访问它们并查看每个文件夹中的文件(我的电脑上有管理员权限)。我查看了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"

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

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

答案 11 :(得分:2)

安装Maven的二进制版本可解决问题

apache-maven-3.6.1-bin.zip

答案 12 :(得分:2)

对于大多数Maven设置问题,例如“找不到或加载主类...”,请从以下步骤开始,看看是否可以解决此问题:

  • 确保解压缩了正确的档案(二进制档案,而不是源档案)
  • 删除所有与Maven相关的用户和系统变量(例如M2_HOME,M2_OPTS等)
  • 确保已设置JAVA_HOME系统变量(例如“ C:\ Program Files \ Java \ jdk1.8.0_172”)
  • 确保在“路径”系统变量(例如“%JAVA_HOME%\ bin”)中添加了Java bin位置
  • 确保将Maven bin位置添加到“路径”系统变量中(例如“ C:\ MyInstalls \ apache-maven-3.5.4 \ bin”)

然后...

  • 验证Java是否已设置(在命令提示符下:java -version)
  • 验证是否已安装maven(在命令提示符下:mvn --version)

答案 13 :(得分:2)

请确保您已下载二进制zip存档(apache-maven-3.5.0-bin.zip)而非Source zip存档。然后将创建的目录apache-maven-3.5.0的bin目录添加到PATH环境变量。

答案 14 :(得分:1)

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

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

答案 15 :(得分:1)

我也遇到了类似的问题。但在我的情况下,我在路径变量中使用了apache-maven-3.3.3-src文件夹。后来我纠正了文件夹apache-maven-3.3.3-bin的正确路径。这解决了这个问题。我不是说这里报告的错误是相同的,但这样你也可以得到这个错误并纠正它。这就是我在这里要说的。

答案 16 :(得分:1)

我认为你下载了错误的版本。 我刚才遇到这个问题,搜索和搜索后没有方法工作。 最后,我发现我下载的maven是Source zip archive。 在我改为Binary zip archive之后,一切都会好起来的。

答案 17 :(得分:1)

看起来你已经安装了源文件(因为src只出现在源文件中,我们不需要它)。尝试安装二进制文件 there。 然后按照描述设置环境变量 there。 这对我有用。我相信它也适合你。

答案 18 :(得分:1)

我发现我的centOS中的这个问题是由#c; Oracle Java替换为gcj",在将默认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

答案 19 :(得分:1)

尝试下载二进制zip(例如Maven 3.0.5(二进制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 \ bin。

答案 20 :(得分:1)

对于可能遇到此问题的其他人,请不要忘记检查〜/ .mavenrc以获取M2_HOME或JAVA_HOME设置。

答案 21 :(得分:0)

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

答案 22 :(得分:0)

当我在Ubuntu的OpenJDK 11上使用Maven 3.5.4时遇到了这个问题。 Ubuntu上的OpenJDK 11实际上仍然是JDK10:

$ ls -al /etc/alternatives/java
lrwxrwxrwx 1 root root 43 Aug 24 04:54 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java
$ java --version
openjdk 10.0.2 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3, mixed mode)

我从Oracle将OpenJDK安装到了/opt/jdk-11.0.1中,并像这样运行Maven:

JAVA_HOME=/opt/jdk-11.0.1 mvn

它现在就像一种魅力。

答案 23 :(得分:0)

我的surefire插件本身有问题。回到2.6版对我有用。版本2.18 / 20 / 22.1给了我错误。 现在,我尝试了surefire插件的3.0.0-M1版本,它可以正常工作。

因此,在2.6和3.0.0版之间的surefire plgin中出了点问题。我认为有些东西被硬编码为默认值,

答案 24 :(得分:0)

对我来说,听起来很有趣,它有助于重新启动eclipse ...

答案 25 :(得分:0)

这对我有用:

  1. 删除环境变量中的所有Mavin引用
  2. 从mavin下载二进制文件
  3. 将其解压缩到您想要的位置:C:\ apache-maven-3.6.0
  4. 转到环境变量,然后将其添加到 System 变量路径“ C:\ apache-maven-3.6.0 \ bin”
  5. 以管理员身份启动命令提示符
  6. 使用以下命令检查版本:mvn -v

CMD结果:

Apache Maven 3.6.0(97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T20:41:47 + 02:00) Maven主页:C:\ apache-maven-3.6.0 \ bin ..

答案 26 :(得分:0)

打开一个新终端并执行以下操作

M2_HOME=/Users/macbook/apache-maven-3.6.1 //Set where maven is
M2=$M2_HOME/bin                          //Set home as bin
export PATH=$M2:$PATH                   //Place the new path

然后输入

mvn -version

您可以在./bash_profile中进行设置,使其在每次运行终端时自动执行

答案 27 :(得分:0)

我的系统(Mac)中也遇到以下错误

错误:找不到或加载主类org.codehaus.plexus.classworlds.launcher.Launcher

进行一些随机浏览后,我遇到了链接“ http://maven.apache.org/install.html”,其中说“ JAVA_HOME”应设置为“ /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre” “。

当我如上所述在“ .bash_profile”中更改“ JAVA_HOME”时,“ mvn”命令开始工作,但“ javac -version”命令停止工作。

当我键入“ javac -version”命令时,出现以下错误

无法在“ /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/bin/javac”(-1)中找到可执行文件

因此,我将“ JAVA_HOME”回滚到“ .bash_profile”中的“ /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home”,并在“ mvn”脚本的顶部添加了以下行< / p>

导出JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre

现在“ mvn”和“ javac”命令都可以正常工作,但是在仔细观察了mvn脚本后,我无法区分以下命令

/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / bin / java -classpath /Users/venkatarajeevmandava/Documents/Maven/apache-maven-3.6.1/ boot / plexus-classworlds-2.6.0.jar -Dclassworlds.conf = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 / bin / m2.conf -Dmaven.home = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 -Dlibrary.jansi.path = /用户/venkatarajeevmandava/Documents/Maven/apache-maven-3.6.1/lib/jansi-native -Dmaven.multiModuleProjectDirectory = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 / bin org.codehaus.plexus.classworlds.launcher.Launcher

/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre / bin / java -classpath /Users/venkatarajeevmandava/Documents/Maven/apache-maven-3.6。 1 / boot / plexus-classworlds-2.6.0.jar -Dclassworlds.conf = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 / bin / m2.conf -Dmaven.home = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 -Dlibrary.jansi.path = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 / lib / jansi-native -Dmaven.multiModuleProjectDirectory = / Users / venkatarajeevmandava /文档/Maven/apache-maven-3.6.1/bin org.codehaus.plexus.classworlds.launcher.Launcher

在上面的第一个命令中导致了以下错误

错误:找不到或加载主类org.codehaus.plexus.classworlds.launcher.Launcher

而第二个命令运行正常。 请注意,以上两个路径均具有“ java”命令,而一个路径则来自“ jre”,另一个路径则来自“ jdk”

其他全局变量如下“ .bash_profile”中的

export M2_HOME = /用户/venkatarajeevmandava/Documents/Maven/apache-maven-3.6.1

export PATH = $ PATH:$ M2_HOME / bin

答案 28 :(得分:-1)

除了可能有用但可能过于对症的答案之外,这里有一个试图帮助找到问题原因的答案。

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

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

  1. 为实际调用脚本调用命令解释器(/bin/shcmd.exe
  2. 此脚本设置所需的环境变量
  3. 最后,它调用带有所需类路径的java解释器,其中包含maven功能。
  4. 问题在于(2)。幸运的是,这个脚本简单,非常简单。对于一个java程序员来说,调试一个大约20行的脚本应该不会有大麻烦,即使它是一个有点外来语言。

    在linux上,您可以调试shellcripts,为您的shell解释器提供-x标志(最有可能是bash)。在Windows上,您必须找到一些其他方法来调试cmd.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
    

    最后,您可以轻松地测试哪个环境变量变坏了,您可以非常轻松地修复脚本(或将其设置为需要的内容)。

答案 29 :(得分:-1)

这是设置Maven时的常见问题。 您需要做的就是以下内容: -

  1. M2_HOME: - D:\ apache-maven-2.0.11
  2. M2: - D:\ apache-maven-2.0.11 \ bin
  3. 路径: - 附加;%M2%
  4. M2_HOME&amp; M2: - 需要声明为系统变量而不是USER / ADMIN变量。

    路径: - 这可以是系统变量或USER / ADMIN变量[PATH]。最好是系统变量。

    一旦您仔细设置了这3个变量,就可以验证Maven的安装如下。

    在CMD提示符上: -


    C:\ Documents and Settings \ ADMIN&gt; 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”

    感谢。