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

我在 视窗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环境变量的解决方案是无效的。

我阅读并尝试了博客上给出的所有解决方案,例如:

但还是不能拿到。我可能错过了什么,在这整个事情? 提前谢谢。

323515 次浏览

你应将 M2 _ HOME 的位置更改为:

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

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

除了@khmarbaise 指出的,我认为你打错了你的 JAVA _ HOME。如果您已经安装在默认位置,那么在 jdk 和1.7.0 _ 04之间应该没有“-”(连字符)。确实如此

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

我也遇到过同样的问题,通过仔细重做环境变量,我解决了这个问题:

  • 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]

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

固定配置:

export M2_HOME=/usr/share/maven

我也有同样的问题。我有 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 Find。

我通过资源管理器找到了那条路径,确定有文件存在。我注意到这些文件夹已经褪色了,但是我可以访问它们并查看每个文件夹中的文件(我在电脑上有管理员权限)。我查看了 Maven 的父文件夹的属性,发现隐藏框被选中了。我取消了检查,并申请和尝试我的目标命令再次成功。

接下来,我再次尝试了 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 上成功运行。

我希望这对你们有所帮助。

这听起来像是您根据路径信息安装(解压缩)了源文件,而不是二进制文件。尝试安装二进制代替,并按照其他海报的答案。

嗯,我有这个问题,在看到这个帖子,特别是 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)

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

  1. M2 _ HOME:-D: apache-maven-2.0.11
  2. M2:-D: apache-maven-2.0.11 bin
  3. 路径:-将其追加;% M2%

M2 _ HOME & M2:-需要声明为 System 变量,而不是 USER/ADMIN 变量。

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

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

关于 CMD 提示:-


C: 文档和设置 ADMIN > mvn-version


产出:-


Apache Maven 2.0.11(r909250; 2010-02-1211: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”

谢谢。

尽管这个问题已经得到了回答,但是我想补充一点,如果您遇到了上面提到的错误,请确保您已经下载了 二进制文件

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

有很多人下载了错误的文件,不管是高年级的还是低年级的

对于其他可能遇到这种情况的人,不要忘记检查 ~/. mavenrc 中的 M2 _ HOME 或 JAVA _ HOME 设置。

我也碰到了这个问题,发现了 这个文章。对于 Maven3,把我的环境变量名从 M2 _ HOME 改为 M3 _ HOME 就可以了。我在一台 Mac 上运行 OSX 10.9和 JDK 1.7。希望这个能帮上忙。

注意: 如果已经设置,请删除 M2 _ HOME

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

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

尝试下载二进制压缩文件(例如 Maven 3.0.5(二进制压缩文件)) ,而不是在官方的 Maven 站点下载完整的源代码。 还要确保命令行能够识别 java 和 javac 命令。 我注意到 Maven Source zip 在 lib 文件夹中没有包含任何库,但是 Binary zip 在启动文件夹中有它们 + ,它有 plexus-classworld-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。

我发现我的 centOS 中的这个问题是由“ 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

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

我想你下载错版本了。 我刚才遇到这个问题,没有办法工作后,搜索和搜索。 最后,我发现我下载的 maven 是 来源压缩档案。 我换成 二进制压缩档案后,一切都会好起来的。

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

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

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

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

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

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

最后,你可以很容易地测试哪个环境变量出了问题,你也可以很容易地修复你的脚本(或者根据需要设置它)。

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

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。

只要确保下载的是 Binary zip 存档(apache-maven-3.5.0-bin.zip) ,而不是 Source zip 存档。然后将创建目录 apache-maven-3.5.0的 bin 目录添加到 PATH 环境变量。

我认为这个错误是由于从 Maven 站点下载 SRC 而不是 BINARY 导致的。请确保下载二进制压缩文件。

因为下面的路径,你将只有当你下载 SRC:

M2 _ HOME C: apache-maven-3.0.4 apache-maven src

enter image description here

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

  • 确保解压正确的归档文件(BINARY 归档文件,而不是 SOURCE 归档文件)
  • 删除所有与 Maven 相关的用户和系统变量(例如 M2 _ HOME、 M2 _ OPTS 等)
  • 确保设置了 JAVA _ HOME 系统变量(比如“ C: Program Files Javajdk1.8.0 _ 172”)
  • 确保在“ path”系统变量中添加 JAVA bin 位置(例如“% JAVA _ HOME% bin”)
  • 确保在“ path”系统变量中添加了 maven bin 位置(比如“ C: MyInstallsapache-maven-3.5.4 bin”)

然后..。

  • 验证 java 是否已经安装(在命令提示符下: java-version)
  • 验证 maven 是否已经安装(在 command 命令提示符下: mvn —— version)

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

它现在像魔法一样有效。

我有一个问题,与一定成功的插件本身。回到2.6版本对我来说很有用。版本2.18/20/22.1给了我这个错误。 现在我尝试了3.0.0-M1版的 surefire 插件,它工作正常。

因此,在版本2.6和3.0.0之间必然会出现一些问题。我假设有一些硬编码作为默认值,这是不应该的。

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

这对我很有效:

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

结果:

Apache Maven 3.6.0(97c98ec64a1fdfe7767ce5ffb20918da4f719f3; 2018-10-24T20:41:47 + 02:00) Maven home: C: apache-Maven-3.6.0 bin. . .

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

Apache-maven-3.6.1-bin. zip

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

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中设置此选项,以便在每次运行终端时自动执行此操作

我的系统(Mac)也出现了以下错误

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

在做了一些随机浏览之后,我发现了一个链接“ http://maven.apache.org/install.html”,上面写着“ JAVA _ HOME”应该设置为“/Library/JAVA/JavaVirtualMachines/jdk1.8.0 _ 45. jdk/content/Home/jre”。

当我在“ . bash _ profile”中修改“ JAVA _ HOME”时,“ mvn”命令开始工作,但“ javac-version”命令停止工作。

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

无法在“/Library/Java/JavaVirtualMachines/jdk1.8.0 _ 45. jdk/content/Home/jre/bin/javac”(- 1)定位可执行文件

因此,我将我的“ JAVA _ HOME”回滚到”/Library/JAVA/JavaVirtualMachines/jdk1.8.0 _ 45。中的 jdk/目录/主页。“ bash _ profile”,并在“ mvn”脚本的顶部添加了以下行

Export JAVA _ HOME =/Library/JAVA/JavaVirtualMachines/jdk1.8.0 _ 45. jdk/content/Home/jre

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

文档/文档/Maven/apache-Maven-3.6.1/bin org.codehaus.plexus.classworlds.Launcher

文档/文档/Maven/apache-Maven-3.6.1/bin org.codehaus.plexus.classworlds.Launcher

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

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

而第二个命令运行良好。 请注意,以上两个路径都有“ java”命令,一个来自“ jre”,另一个来自“ jdk”

其他全局变量如“ . bash _ profile”中所示

Export M2 _ HOME =/Users/venkatarajeevmandava/Document/Maven/apache-Maven-3.6.1

Export PATH = $PATH: $M2 _ HOME/bin

解决这个问题的方法是删除我机器上下载的 maven (/Users/kkohli/Desktop/Personal/Code/Java/apache-maven-3.6.3)并从 apache 站点重新下载二进制版本。没有修改任何其他 bashprofile 文件等(我的 M2 _ HOME、 JAVA _ HOME 等设置在我的 bashprofile 中)

我遇到了同样的错误。下面是发生了什么。

我错误地引入了一个错误。因此,没有用分号分隔每个 PATH

(;)

我用柱子把它分开了

(:)

因此出现以下错误的原因:

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

在意识到自己的错误之后,我改变了方法:

export PATH="/Users/samo/Downloads/apache-maven-3.8.6/bin:$PATH:/Users/samo/Documents/flutter/bin"

回到这里:

export PATH="/Users/samo/Downloads/apache-maven-3.8.6/bin;$PATH:/Users/samo/Documents/flutter/bin"

之后一切就开始运转了。

所以,请检查你没有犯同样/类似的错误

第1步: 安装 JDK 并设置 JAVA _ HOME

步骤2: 然后从 < a href = “ https://maven.apache.org/download.cgi”rel = “ nofollow norefrer”> https://maven.apache.org/download.cgi 下载 maven enter image description here

Step3: 按照以下步骤添加 MAVEN _ home 环境变量

单击“ New...”按钮,将 MAVEN _ HOME 作为变量名,将 C: Users fazal soft apache-MAVEN-3.8.6作为变量值

然后将% MAVEN _ HOME% bin 添加到 PATH

第四步: 再次检查

Mvn-version