ข้อผิดพลาด OSX สำหรับการติดตั้ง Maven ไม่รองรับ 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 sth ดังนี้:

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

คำตอบ:


275

ปัญหาเกิดจากคุณไม่ได้ตั้งค่า JAVA_HOME ใน Mac อย่างถูกต้อง ในการทำเช่นนั้นคุณควรตั้งค่าดังนี้:

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

ในกรณีของฉันการติดตั้ง JDK ของฉันคือ jdk1.8.0_40 ตรวจสอบให้แน่ใจว่าคุณพิมพ์ของคุณ

จากนั้นคุณสามารถใช้คำสั่ง maven

ความนับถือ!


15
ฉันยังทราบว่ารุ่นปัจจุบันของ Maven3 ต้องการ Java7 อย่างน้อยฉันได้รับข้อความแสดงข้อผิดพลาดนี้เมื่อJAVA_HOME ได้รับการตั้งค่าอย่างถูกต้อง แต่เป็น Java JDK 1.6
Steve Powell

ฉันต้องการexport JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/". profile
aliteralmind

ในกรณีของฉันผบ. /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

นอกจากนี้หากเพิ่มลงใน. profile หรือ. bash_profile อย่าลืมปิดเทอร์มินัลของคุณ / เริ่มเทอร์มินัลใหม่เพื่อให้เนื้อหาของไฟล์นี้ทำงานอีกครั้ง
jotadepicas

16

โปรดลอง:

$JAVA_HOME/bin/java -version

Maven ใช้$JAVA_HOMEสำหรับความละเอียด classpath ของ JRE libs เพื่อให้แน่ใจว่าใช้ 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 มันเก่าเกินไปหรือเปล่า และคำถามที่สอง: ฉันไม่มีโฟลเดอร์ "java" ภายใต้ "/ usr" เฉพาะภายใต้ System / Library? ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก
Frederik Witte

6
เริ่มต้นจาก Maven 3.3 มีข้อกำหนดขั้นต่ำ JDK 1.7 หากคุณต้องการคอมไพล์ด้วย JDK 1.6 คุณต้องติด Maven 3.2.5 หรือน้อยกว่า
René

1
ฉันใช้งานได้แล้ว :) ฉันติดตั้ง JDK 1.7 แล้ว แต่ JAVA_HOME อ้างถึง jdk 1.6
Frederik Witte

7

$HOME/.zshrcโซลูชันแบบไดนามิกหากคุณชอบฉันเช่น Linux @ ทำงาน; MBP / A @ home

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

บน osx รับ jdk ล่าสุดก่อน - oracle.com/technetwork/java/javase/downloads/…
lfender6445

3

ฉันแก้ไขมันโดยใส่ maven เวอร์ชันเก่า (2.x) โดยใช้ brew:

brew uninstall maven
brew tap homebrew/versions 
brew install maven2

2

ใน Eclipse คุณไม่จำเป็นต้องเปลี่ยน JAVA_HOME คุณเพียงแค่เปลี่ยนการกำหนดค่าการรันสำหรับ Maven เป็นบางอย่างที่สูงกว่า 1.6 (แม้ว่าโปรเจ็กต์ของคุณจะอยู่บน Java 6 แต่ก็ไม่ควรเป็น Maven) คลิกขวาที่โปรเจ็กต์เลือก Maven Build หรือ Run As> Run Configurations และตั้งค่าเวอร์ชัน JDK ที่ถูกต้อง


0

ทำสิ่งนี้ใน. profile ของคุณ -

ส่งออก JAVA_HOME = `/ usr / libexec / java_home`

(backticks ตรวจสอบให้แน่ใจว่าได้รันคำสั่งและวางค่าไว้ใน JAVA_HOME)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.