mvn не узнает правильную Java
У меня точно такая же проблема, как у этого парня:
Ошибка установки Maven OSX Не поддерживается Major.minor версия 51.0
Ничто там не работает для меня.... Я думаю, что проблема в моих символических ссылках где-то. Я определил $JAVA_HOME в.bash_profile, а java -version правильно сообщает версию. Однако по какой-то причине mvn пытается использовать старую версию Java.
Вот список всего на моей машине:
/usr/libexec/java_home -verbose
Matching Java Virtual Machines (5):
1.8.0_40, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
1.7.0_79, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
1.7.0_75, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home
1.6.0_65-b14-466.1, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-466.1, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Я хочу использовать 1.8. И mvn, чтобы признать это.
Если я запускаю это:
ls -l `which java`
lrwxr-xr-x 1 root wheel 74 May 24 22:46 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
И тогда, если я бегу:
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/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)
Я замечаю эту символическую ссылку не в порядке:
cd /System/Library/Frameworks/JavaVM.framework/Versions
ls -l
total 64
lrwxr-xr-x 1 root wheel 10 May 24 22:46 1.4 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 May 24 22:46 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 May 24 22:46 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 May 24 22:46 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 May 24 22:46 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 May 24 22:46 1.6.0 -> CurrentJDK
drwxr-xr-x 7 root wheel 238 May 24 22:46 A
lrwxr-xr-x 1 root wheel 1 May 24 22:46 Current -> A
lrwxr-xr-x 1 root wheel 59 May 24 22:46 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
"CurrentJDK" действительно где-нибудь используется? А как мне обновить ссылку?
Я не могу понять, что происходит... кажется, что все указывает на новую Java, где и как mvn читает Java 6 (Unsupported major.minor version 51.0)?
1 ответ
Символическая ссылка в /System/Library/Frameworks/JavaVM.framework/Versions указывала на старый JDK.
Выполнение этих команд исправило это:
cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/ CurrentJDK