在cygwin中运行时出现maven错误?

时间:2013-06-05 14:13:39

标签: maven cygwin maven-3

我在Windows 7中安装了cygwin并下载并安装了maven“二进制文件”并进行了以下设置

export JAVA_HOME=/cygdrive/c/java/jdk1.7.0_11
export MAVEN_HOME=/usr/apache-maven-3.0.5
export M2_HOME=/home/MyUser/.m2
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

$ which java
/cygdrive/c/java/jdk1.7.0_11/bin/java

$ java -version
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

$ which mvn
/usr/apache-maven-3.0.5/bin/mvn

$ mvn -version
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,但没有解决我的问题。

我错过了什么?

3 个答案:

答案 0 :(得分:2)

Maven with Cygwin - Error: JAVA_HOME is not defined correctly

上面帖子底部的“alias mvn = mvn.bat”回答对我有用。但是,这是解决方案吗?

答案 1 :(得分:1)

在同样的问题之后,我花了几个小时毫无结果地摆弄了JAVA_HOME,M2_HOME和M2的不同组合。最后,我开始调试mvn脚本(通过将第1行更改为“#!/bin/sh -x”)。之所以会发生这种情况,是因为脚本依赖于shell globbing来获取正确版本的.jar文件(大约157行):

CLASSPATH="${M2_HOME}/boot/plexus-classworlds-*.jar"

* 未被展开,因为某些原因会禁用通配; 因此,脚本尝试执行的命令是:

'/cygdrive/c/Program Files/Java/jdk1.7.0_40/bin/java' -classpath 'D:\apps\apache-maven-3.0.4\boot\plexus-classworlds-*.jar' '-Dclassworlds.conf=D:\apps\apache-maven-3.0.4\bin\m2.conf' '-Dmaven.home=D:\apps\apache-maven-3.0.4' org.codehaus.plexus.classworlds.launcher.Launcher -version

应该是:

'/cygdrive/c/Program Files/Java/jdk1.7.0_40/bin/java' -classpath 'D:\apps\apache-maven-3.0.4\boot\plexus-classworlds-2.4.jar' '-Dclassworlds.conf=D:\apps\apache-maven-3.0.4\bin\m2.conf' '-Dmaven.home=D:\apps\apache-maven-3.0.4' org.codehaus.plexus.classworlds.launcher.Launcher -version

解决方案:编辑“mvn”脚本并将第157行更改为:

CLASSPATH="$(echo ${M2_HOME}/boot/plexus-classworlds-*.jar)"

答案 2 :(得分:-2)

更改.bashrc_profile文件中的JAVA_HOME路径