我一直在Git Bash(64位)上使用Maven几个月,现在突然停止工作,现在正在生成这个错误在任何Maven的命令:Maven classworlds.launcher.Launcher错误Git for Windows(64位)
[email protected] MINGW64 ~ (master *)
$ mvn -v
Error: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher
我已经审查了这么多问题,包括这个:Maven error: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher,但并没有解决我的问题。
我已经从2.12升级到Windows的最新Git(2.14.2.windows.2),但问题依然存在。
我的Maven安装在C:\ Apache的行家-3.5.0 \ bin中,这是在我的PATH变量:
[email protected] MINGW64 ~ (master *)
$ echo $PATH
...:/c/jdk1.7.0_79/bin:/c/apache-maven-3.5.0/bin:...
我也JAVA_HOME设置正确:
[email protected] MINGW64 ~ (master *)
$ echo $JAVA_HOME
C:\jdk1.7.0_79
我试着添加/删除MAVEN_HOME但是这似乎并没有在Apache Maven的启动脚本来进行检测(C:\ Apache的行家-3.5.0 \ BIN \ MVN):
[email protected] MINGW64 ~ (master *)
$ echo $MAVEN_HOME
c:\apache-maven-3.5.0
如果我进入Apache Maven Startup Script并用C:\ apache-maven-3.5.0替换$ {MAVEN_HOME}的实例,那么它似乎找到Launcher类并正确执行。
编辑是这样的:
CLASSWORLDS_JAR=`echo "${MAVEN_HOME}"/boot/plexus-classworlds-*.jar`
to
CLASSWORLDS_JAR=`echo /c/apache-maven-3.5.0/boot/plexus-classworlds-*.jar`
继而产生:
[email protected] MINGW64 ~ (master *)
$ mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T15:39:06-04:00)
Maven home: C:\apache-maven-3.5.0
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: C:\jdk1.7.0_79\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
这是一个不雅的解决办法,而宁愿找到合适的解决方案。我可以尝试哪些环境或配置更改,以便Maven能够在不对路径进行硬编码的情况下运行?
步骤/结果VonC's answer:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\windows\system32>set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
C:\windows\system32>set GH=C:\Program Files\Git
C:\windows\system32>set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%PATH%
C:\windows\system32>set PATH=%JAVA_HOME%\bin;%MAVEN_HOME%\bin;%PATH%
C:\windows\system32>echo %PATH%
C:\jdk1.7.0_79\bin;c:\apache-maven-3.5.0\bin;C:\Program Files\Git\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
C:\windows\system32>echo %M2_HOME%
C:\apache-maven-3.5.0
C:\windows\system32>mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T15:39:06-04:00)
Maven home: c:\apache-maven-3.5.0\bin\..
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: C:\jdk1.7.0_79\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
C:\Windows\System32>bash
[email protected] MINGW64 /c/Windows/System32
$ mvn -v
Error: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher
[email protected] MINGW64 /c/Windows/System32
$ echo $M2_HOME
C:\apache-maven-3.5.0
[email protected] MINGW64 /c/Windows/System32
$ echo $MAVEN_HOME
c:\apache-maven-3.5.0
进一步调试之后,我认识我的问题似乎是相同Maven error in MINGW Git bash: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher,其中MAVEN_HOME变量被在这一段代码清零:如果我运行违规行[[ -n "$MAVEN_HOME" ]] && MAVEN_HOME=`(cd "$MAVEN_HOME"; pwd)`
在bash会话,我可以重现在最新的Git的行为适用于Windows:
[email protected] MINGW64 ~ (master *)
$ git --version
git version 2.14.2.windows.3
[email protected] MINGW64 ~ (master *)
$ echo $MAVEN_HOME
c:\apache-maven-3.5.0
[email protected] MINGW64 ~ (master *)
$ [[ -n "$MAVEN_HOME" ]] && MAVEN_HOME=`(cd "$MAVEN_HOME"; pwd)`
[email protected] MINGW64 ~ (master *)
$ echo $MAVEN_HOME
[email protected] MINGW64 ~ (master *)
$
这是我所得到的,当我直接执行该命令 - 它返回当前目录下,而不是作为MAVEN_HOME我期望。假设这是因为该命令在子shell中执行?
[email protected] MINGW64 ~ (master *)
$ echo `(cd "$MAVEN_HOME"; pwd)`
/c/home
[email protected] MINGW64 ~ (master *)
$ `(cd "$MAVEN_HOME"; pwd)`
bash: /c/home: Is a directory
您是否可以共享使用中的JAVA_HOME和MAVEN_HOME配置以及git bash版本。 – nullpointer
@nullpointer谢谢 - 已纳入问题,让我知道如果你需要更多的信息。 – mcknz