2015-03-25 23 views
112

Tôi đã cài đặt maven bằng cách làm theo các bước này: (a hướng dẫn)Maven cài đặt phiên bản OSX Lỗi không được hỗ trợ MAJOR.MINOR 51,0

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 tiếng vang 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 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 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 bổ sung:

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 + –

Trả lời

274

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

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

Trong trường hợp của tôi cài đặt JDK của tôi là jdk1.8.0_40, chắc chắn rằng bạn gõ của bạn.

Sau đó, bạn có thể sử dụng 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 một cách chính xác, nhưng với một Java 1.6 JDK. –

+0

Tôi cần 'xuất JAVA_HOME ="/Thư viện/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/"' vào hồ sơ của tôi. – aliteralmind

+0

Trong trường hợp của tôi, thư mục '/ Library/Java/JavaVirtualMachines' trống ... tôi nên làm gì? ps'java -version phiên bản java "1.6.0_65" Môi trường chạy thử Java (TM) SE (xây dựng 1.6.0_65-b14-466.1-11M4716) Java HotSpot (TM) Máy chủ 64-bit VM (xây dựng 20.65-b04- 466.1, chế độ hỗn hợp) ' – AnnabellChan

16

hãy thay thử

$JAVA_HOME/bin/java -version 

Maven sử dụng $ JAVA_HOME để phân giải đường dẫn của thư rác JRE. Để chắc chắn sử dụng một JDK nào đó cài đặt nó một cách rõ ràng trước khi biên dịch, ví dụ:

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

Không phải là có một 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://jira.codehaus.org/browse/MNG-5780.

+0

Xin chào, tôi hiện đang vật lộn với cùng một vấn đề .. Ý bạn là gì bởi "Không có phiên bản <1.7"? Tôi đang sử dụng Java 1.6, là quá cũ? 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 nào cũng sẽ được đánh giá cao –

+6

Bắt đầu từ Maven 3.3 có yêu cầu tối thiểu là JDK 1.7. Nếu bạn muốn biên dịch với JDK 1.6, bạn đã bị kẹt trên Maven 3.2.5 trở xuống. –

+1

Tôi đã làm việc đó :) Tôi đã cài đặt JDK 1.7, nhưng JAVA_HOME đã tham chiếu đến jdk 1.6 –

7

Giải pháp động $HOME/.zshrc, nếu bạn giống như tôi, ví dụ: 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 
+0

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ũ. –

+0

trên osx nhận mới nhất jdk trước - http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html – lfender6445

3

Tôi giải quyết nó đặt một phiên bản cũ của maven (2.x), sử dụng bia:

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 là trên Java 6, Maven không nên). Nhấn chuột phải vào dự án, chọn Maven Build hoặc Run As> Run Configurations và thiết lập phiên bản JDK chính xác.

0

Thực hiện việc này trong của bạn.hồ sơ cá nhân -

xuất khẩu JAVA_HOME = `/ usr/libexec/java_home`

(backticks hãy chắc chắn để thực hiện lệnh và đặt giá trị của nó trong JAVA_HOME)

Các vấn đề liên quan