Cài đặt Maven Lỗi OSX Không được hỗ trợ phiên bản major.minor 51.0


114

Tôi đã cài đặt maven bằng cách làm theo các bước sau: (một hướng dẫn)

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

sau đó tôi đã viết echo trong sth .bash_profile như thế này:

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

và tôi cũng đã viết điều này trong .bashrc

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

Bây giờ khi tôi muốn kiểm tra phiên bản ( mvn -v), tôi nhận được ngoại lệ sau: Tôi nghĩ rằng có một số phiên bản bị sai, nhưng tôi không biết.

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)

Thông tin thêm:

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: Phiên bản Java đã cũ. Sử dụng Java 1.7 +
Ajeet Ganga

Câu trả lời:


275

Vấn đề là do bạn chưa đặt JAVA_HOME trong Mac đúng cách. Để làm được điều đó, bạn nên đặt nó như sau:

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

Trong trường hợp của tôi, bản cài đặt JDK của tôi là jdk1.8.0_40, hãy đảm bảo rằng bạn nhập của bạn.

Sau đó, bạn có thể sử dụng các lệnh maven.

Trân trọng!


15
Tôi cũng lưu ý rằng phiên bản hiện tại của Maven3 cần Java7, ít nhất tôi đã nhận được thông báo lỗi này khi JAVA_HOME được đặt chính xác, nhưng với Java 1.6 JDK.
Steve Powell

Tôi cần export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/".profile của mình.
aliteralmind

Trong trường hợp của tôi, dir /Library/Java/JavaVirtualMachinestrống ... tôi phải làm gì? 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
bạn nên thêm tệp này vào tệp .profile hoặc .bash_profile của mình tùy thuộc vào phiên bản Mac OS X bạn có.
Pacu

Ngoài ra, nếu được thêm vào .profile hoặc .bash_profile, hãy nhớ đóng thiết bị đầu cuối của bạn / bắt đầu một thiết bị đầu cuối mới để nội dung của tệp này được chạy lại.
jotadepicas

16

Vui lòng thử:

$JAVA_HOME/bin/java -version

Maven sử dụng $JAVA_HOMEđể phân giải classpath của JRE libs. Để chắc chắn sử dụng một JDK nhất định, hãy đặt nó rõ ràng trước khi biên dịch, ví dụ:

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

Không có phiên bản <1.7 và bạn đang sử dụng Maven 3.3.1? Trong trường hợp này, lý do là điều kiện tiên quyết mới: https://issues.apache.org/jira/browse/MNG-5780


Này, tôi hiện đang đấu tranh với cùng một vấn đề .. Ý của bạn là "Không có phiên bản <1.7" là gì? Tôi đang sử dụng Java 1.6, có quá cũ không? Và câu hỏi thứ hai: Tôi không có thư mục "java" trong "/ usr", chỉ trong Hệ thống / Thư viện? Bất kỳ trợ giúp sẽ được đánh giá cao
Frederik Witte

6
Bắt đầu từ Maven 3.3, yêu cầu tối thiểu là 1.7 JDK. Nếu bạn muốn biên dịch với JDK 1.6, bạn phải sử dụng Maven 3.2.5 trở xuống.
René

1
Tôi đã nhận nó làm việc đã :) Tôi đã JDK 1.7 được cài đặt, nhưng JAVA_HOME được tham khảo để JDK 1.6
Frederik Witte

7

Một $HOME/.zshrcgiải pháp năng động , nếu bạn giống tôi. Linux @ làm việc; 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

Vấn đề ở đây KHÔNG phải là java_home được thiết lập. Nó được thiết lập, nhưng phiên bản cũ.
Ajeet Ganga

trên osx, tải jdk mới nhất trước - oracle.com/technetwork/java/javase/downloads/…
lfender6445 21/09/15

3

Tôi đã giải quyết nó bằng cách sử dụng phiên bản cũ của maven (2.x), sử dụng brew:

brew uninstall maven
brew tap homebrew/versions 
brew install maven2

2

Trong Eclipse, bạn không cần phải thay đổi JAVA_HOME, bạn chỉ cần thay đổi cấu hình chạy cho Maven thành một cái gì đó trên 1.6 (ngay cả khi dự án của bạn trên Java 6, Maven không nên như vậy). Nhấp chuột phải vào dự án, chọn Maven Build hoặc Run As> Run Configurations và đặt phiên bản JDK chính xác.


0

Làm điều này trong .profile của bạn -

xuất JAVA_HOME = `/ usr / libexec / java_home`

(dấu gạch ngược đảm bảo thực thi lệnh và đặt giá trị của nó trong JAVA_HOME)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.