142

maven-3.0.4Windows 7上安装了最新的:
安装详细信息如下:
安装路径:

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  

这是我PC上安装的唯一maven版本,许多博客上提到的删除以前的M2_HOME环境变量的解决方案无效。

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

但仍然无法得到它。我可能在这整件事中缺少什么?提前致谢。

4

30 回答 30

142

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

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

于 2014-03-10T20:19:26.330 回答
73

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

仅当您是高级用户并且知道如何处理它时,才应下载源文件。

我有相当一部分人下载了错误的文件,老年人和青少年

于 2013-09-26T09:15:56.453 回答
61

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

  • 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]
于 2012-11-13T18:08:40.157 回答
52

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

固定:

export M2_HOME=/usr/share/maven
于 2013-03-06T00:40:15.420 回答
49

我相信这个错误是由于从 Maven 站点下载 SRC 而不是 BINARY 引起的。请确保下载二进制 zip。

因为下面的路径,只有在下载 SRC 时才会得到:

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

在此处输入图像描述

于 2017-12-25T14:33:23.697 回答
21

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

于 2013-03-27T16:19:12.863 回答
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)

于 2013-08-09T20:36:34.083 回答
6

更高版本的 Maven 的解决方案是直截了当的。我在 OS X ElCap、10.11.6 上并升级到 Maven 3.3.9。我对错误“”有同样的问题Could not find ...org.codehaus.plexus...此处提供的链接在 McKamey 的评论中提供了解决方案 - 只需删除 M2_HOME ( unset M2_HOME)。一旦我尝试过,一切都按预期工作。

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

于 2017-02-16T04:11:53.950 回答
5

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

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

然后...

  • 验证 java 是否设置(在命令提示符处:java -version)
  • 验证 maven 是否已设置(在命令提示符处:mvn --version)
于 2018-07-16T18:22:51.810 回答
4

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

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

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

于 2012-06-20T11:12:57.710 回答
4

我在我的 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

于 2014-05-15T18:49:47.573 回答
4

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

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为每次运行终端时自动执行此操作

于 2019-08-14T23:12:35.873 回答
3

安装二进制版本的 Maven 修复了问题

apache-maven-3.6.1-bin.zip

于 2019-08-01T10:42:37.087 回答
3

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

于 2017-08-03T09:20:12.500 回答
2

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

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

我确认我的M2_HOME变量设置为 Maven 安装在 pc 上的路径,并且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 上成功运行。

我希望这对你们中的一些人有所帮助。

于 2013-03-07T06:20:41.680 回答
1

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

JAVA_HOME C:\Program Files\Java\jdk1.7.0_04 
于 2012-06-20T12:43:09.350 回答
1

我发现我的centOS中的这个问题是由“Oracle Java is replace by 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
于 2015-03-03T09:07:43.010 回答
1

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

于 2013-12-17T19:18:07.657 回答
1

尝试下载二进制 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\bin。

于 2014-12-02T12:27:42.223 回答
1

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

于 2017-01-17T09:44:18.030 回答
1

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

于 2015-08-20T06:34:03.710 回答
1

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

于 2015-11-06T03:42:01.537 回答
0

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

于 2014-07-06T08:58:28.443 回答
0

这对我有用:

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

命令结果:

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

于 2019-03-11T07:47:54.867 回答
0

在可能有用但可能过于症状的答案旁边,这里有一个试图帮助找出问题原因的答案。

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

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

  1. 为实际调用脚本调用命令解释器(/bin/sh或)cmd.exe
  2. 此脚本设置所需的环境变量
  3. 最后,它使用包含 maven 功能的所需类路径调用 java 解释器。

问题在于(2)。幸运的是,这个脚本很简单,非常简单。对于 java 程序员来说,调试大约 20 行的脚本应该不是什么大麻烦,即使它有点陌生。

在 linux 上,您可以调试 shellscripts,将-x标志提供给您的 shell 解释器(很可能是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

最后,您可以轻松测试哪个环境变量坏了,并且您可以非常轻松地修复您的脚本(或根据需要设置它)。

于 2016-01-20T17:08:59.757 回答
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

它现在就像一个魅力。

于 2018-11-19T15:55:20.903 回答
0

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

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

在做了一些随机浏览后,我发现了链接“ http://maven.apache.org/install.html ”,上面写着“JAVA_HOME”应该设置为“/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/内容/主页/jre”。

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

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

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

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

导出 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=/Users/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/Documents/Maven/apache-maven-3.6。 1/bin org.codehaus.plexus.classworlds.launcher.Launcher

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

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

而第二个命令工作正常。请注意,上述两个路径都有“java”命令,一个来自“jre”,另一个来自“jdk”

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

导出 M2_HOME=/Users/venkatarajeevmandava/Documents/Maven/apache-maven-3.6.1

导出 PATH=$PATH:$M2_HOME/bin

于 2020-04-02T05:39:45.273 回答
0

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

所以版本 2.6 和 3.0.0 之间的surefire plgin 有问题。我假设有一些硬编码的默认值不应该。

于 2018-11-26T09:42:09.500 回答
0

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

于 2018-12-03T19:31:20.040 回答
-1

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

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

M2_HOME & M2 :- 需要声明为系统变量而不是 USER / ADMIN 变量。

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

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

在 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 主页:C:\Program Files\Java\jdk1.6.0_22\jre 默认语言环境:en_US,平台编码:Cp1252 操作系统名称:“windows xp” 版本:“5.1” 架构:“x86” 系列:“windows”

谢谢。

于 2013-09-22T10:43:22.617 回答