Instalasi Maven Kesalahan OSX Versi mayor.minor tidak didukung 51.0

114

Saya menginstal maven dengan mengikuti langkah-langkah ini: (tutorial)

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

lalu saya tulis echo di .bash_profile sth seperti ini:

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

dan juga saya menulis ini di .bashrc

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

sekarang ketika saya ingin memeriksa versi ( mvn -v) saya mendapatkan pengecualian berikut: Saya pikir ada beberapa versi yang salah, tetapi saya tidak tahu.

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)

Informasi tambahan:

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
Steven
sumber
2
TL; DR: Versi Java sudah lama. Gunakan Java-1.7 +
Ajeet Ganga

Jawaban:

275

Masalahnya karena Anda belum menyetel JAVA_HOME di Mac dengan benar. Untuk melakukan itu, Anda harus mengaturnya seperti ini:

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

Dalam kasus saya, instalasi JDK saya adalah jdk1.8.0_40, pastikan Anda mengetik milik Anda.

Kemudian Anda dapat menggunakan perintah maven.

Salam!

GerSua
sumber
15
Saya juga mencatat bahwa versi saat ini dari Maven3 kebutuhan Java7, setidaknya saya mendapat pesan kesalahan ini ketika JAVA_HOME itu diatur dengan benar, tetapi untuk Java 1.6 JDK.
Steve Powell
Saya perlu export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/"profil saya.
aliteralmind
Dalam kasus saya, dirnya /Library/Java/JavaVirtualMachineskosong ... apa yang harus saya lakukan? 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
Anda harus menambahkan ini ke file .profile atau .bash_profile tergantung pada versi Mac OS X yang Anda miliki.
Pacu
juga, jika ditambahkan ke .profile atau .bash_profile, ingatlah untuk menutup terminal Anda / memulai terminal baru agar konten file ini dijalankan kembali.
jotadepicas
16

Silakan coba:

$JAVA_HOME/bin/java -version

Maven menggunakan $JAVA_HOMEresolusi classpath JRE libs. Untuk memastikan untuk menggunakan JDK tertentu, setel secara eksplisit sebelum kompilasi, misalnya:

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

Apakah tidak ada versi <1.7 dan Anda menggunakan Maven 3.3.1? Dalam hal ini alasannya adalah prasyarat baru: https://issues.apache.org/jira/browse/MNG-5780

René
sumber
Hei, saat ini saya berjuang dengan masalah yang sama .. Apa yang Anda maksud dengan "Apakah tidak ada versi <1.7"? Saya menggunakan Java 1.6, apakah itu terlalu tua? Dan pertanyaan kedua: Saya tidak memiliki folder "java" di bawah "/ usr", hanya di Sistem / Library? Bantuan apa pun akan sangat dihargai
Frederik Witte
6
Mulai dari Maven 3.3 ada persyaratan minimum JDK 1.7. Jika Anda ingin mengkompilasi dengan JDK 1.6, Anda harus terjebak di Maven 3.2.5 atau kurang.
René
1
Saya sudah membuatnya berfungsi :) Saya sudah menginstal JDK 1.7, tetapi JAVA_HOME merujuk ke jdk 1.6
Frederik Witte
7

$HOME/.zshrcSolusi dinamis , jika Anda seperti saya yaitu. Linux @ kerja; MBP / A @ rumah

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
evandrix
sumber
Masalahnya di sini BUKAN java_home diatur. Sudah diatur, tetapi versinya sudah lama.
Ajeet Ganga
di osx dapatkan jdk terbaru terlebih dahulu - oracle.com/technetwork/java/javase/downloads/…
lfender6445
3

Saya menyelesaikannya dengan menggunakan versi lama maven (2.x), menggunakan brew:

brew uninstall maven
brew tap homebrew/versions 
brew install maven2
javaboygo.dll
sumber
2

Di Eclipse, Anda tidak perlu mengubah JAVA_HOME, Anda hanya perlu mengubah konfigurasi run untuk Maven ke sesuatu di atas 1.6 (meskipun proyek Anda menggunakan Java 6, Maven seharusnya tidak). Klik kanan proyek, pilih Maven Build atau Run As> Run Configurations dan setel versi JDK yang benar.

Noumenon
sumber
0

Lakukan ini di profil. Anda -

ekspor JAVA_HOME = `/ usr / libexec / java_home`

(backticks pastikan untuk menjalankan perintah dan menempatkan nilainya di JAVA_HOME)

Pradeep
sumber