Maven安装OSX错误不支持的major.minor版本51.0


114

我按照以下步骤安装了Maven :(一个教程)

JAVA_HOME=/Library/Java/Home
export M2_HOME=/Users/steven/zimmermann/maven
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

echo $JAVA_HOME
echo $M2_HOME
echo $M2
echo $PATH

nano .bash_profile

然后我在.bash_profile里写了回声,像这样:

JAVA_HOME=/usr/libexec/java_home
M2_HOME=/path/to/your/apache-maven-3.x.x
M2=/path/to/your/apache-maven-3.x.x/bin
PATH=/path/to/maven/bin:/$….bla-bla-bla

我也是在.bashrc中写的

export M2_HOME=/Users/steven/zimmermann/maven
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

现在,当我要检查版本(mvn -v)时,出现以下异常:我认为某些版本错误,但是我不知道。

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:401)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:254)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
    at org.codehaus.plexus.classworlds.launcher.Launcher.getMainClass(Launcher.java:144)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:266)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

附加信息:

java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
javac -version
javac 1.8.0_40

2
TL; DR:Java版本较旧。使用Java-1.7 +
Ajeet Ganga

Answers:


275

问题是因为您没有在Mac中正确设置JAVA_HOME。为了做到这一点,你应该像这样设置它:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home

在我的情况下,我的JDK安装为jdk1.8.0_40,请确保键入您的JDK。

然后,您可以使用maven命令。

问候!


15
我还注意到,Maven3的当前版本需要Java7,至少当我得到这个错误信息JAVA_HOME 设置正确,但到Java JDK 1.6。
史蒂夫·鲍威尔

我需要export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/"我的.profile。
2015年

在我的情况下,目录/Library/Java/JavaVirtualMachines为空...我该怎么办?psjava -version java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)
LittleLittleQ

1
您应该将此文件添加到您的.profile或.bash_profile文件中,具体取决于您使用的Mac OS X版本。
Pacu 2015年

同样,如果添加到.profile或.bash_profile,请记住关闭终端/启动新终端,以便再次运行此文件的内容。
jotadepicas

16

请尝试:

$JAVA_HOME/bin/java -version

Maven $JAVA_HOME用于JRE库的类路径解析。为了确保使用某个JDK,请在编译之前明确设置它,例如:

export JAVA_HOME=/usr/java/jdk1.7.0_51

没有低于1.7的版本,并且您正在使用Maven 3.3.1吗?在这种情况下,原因是新的先决条件:https : //issues.apache.org/jira/browse/MNG-5780


嘿,我目前正面临着同样的问题。.“没有版本<1.7”是什么意思?我正在使用Java 1.6,这太旧了吗?第二个问题:我在“ / usr”下没有“ java”文件夹,仅在系统/库下?任何帮助将不胜感激
Frederik Witte

6
从Maven 3.3开始,最低要求为JDK 1.7。如果要使用JDK 1.6进行编译,则必须使用Maven 3.2.5或更低版本。
勒内·

1
我已经可以使用它了:)我已经安装了JDK 1.7,但是JAVA_HOME引用的是jdk 1.6
Frederik Witte 2015年

7

一个动态的$HOME/.zshrc解决方案,如果您像我一样。Linux @工作; MBP / A @家

if [[ $(uname) == "Darwin" ]]; then export OSX=1; fi
if [[ $(uname) ==  "Linux" ]]; then export LINUX=1; fi

if [[ -n $OSX ]]; then
        export JAVA_HOME=$(/usr/libexec/java_home)
else
        export JAVA_HOME=/usr/lib/jvm/default-java
fi

这里的问题不是设置了java_home。已设置,但版本旧。
Ajeet Ganga


3

我使用brew将旧版本的Maven(2.x)放入其中,从而解决了该问题:

brew uninstall maven
brew tap homebrew/versions 
brew install maven2

2

在Eclipse中,您不需要更改JAVA_HOME,只需要将Maven的运行配置更改为1.6以上(即使您的项目是在Java 6上,也不应该使用Maven)。右键单击项目,选择“ Maven构建或运行方式”>“运行配置”,然后设置正确的JDK版本。


0

在您的.profile中执行此操作-

导出JAVA_HOME =`/ usr / libexec / java_home`

(反引号确保执行该命令并将其值放在JAVA_HOME中)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.