У меня проблемы с обновлением JDK 1.7 → 1.8 на OSX. Обновление завершено, но javac по-прежнему возвращает 1.7 в качестве версии.
Я загрузил JDK 8_u5 с домашней страницы Oracle и запустил установщик.
Я также выполнил следующие шаги, после установки:
> export JAVA_HOME=`/usr/libexec/java_home -v 1.8` (Executed in my .bashrc file)
> echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
> javac -version
javac 1.7.0_21
> $JAVA_HOME/bin/javac -version
javac 1.7.0_21
> $JAVA_HOME/bin/java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
Я прошел и удалил Java 1.7 (и все другие версии JDK), а затем снова запустил установщик:
> ls /Library/Java/JavaVirtualMachines
jdk1.8.0_05.jdk
По-прежнему бесполезно, javac сообщает о версии как 1.7.0_21
> which javac
/usr/bin/javac
> ls -ltra /usr/bin/javac
[snipped] /usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
В этом пути Current
является символической ссылкой на A
. Содержимое A/Commands
представляет собой серию файлов (а не символических ссылок).
> cd A/Commands
> ./javac -version
javac 1.7.0_21
> ./java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
Изменить
В дополнение к исходному сообщению, я сделал несколько операций с jenv, как это было предложено на этот ответ.
> jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
> jenv global oracle64-1.8.0.05
> jenv version
oracle64-1.8.0.05 (set by /Users/martypitt/.jenv/version)
> jenv info java
Jenv will exec : /Users/martypitt/.jenv/versions/oracle64-1.8.0.05/bin/java
> jenv info javac
Jenv will exec : /Users/martypitt/.jenv/versions/oracle64-1.8.0.05/bin/javac
> javac -version
javac 1.7.0_21
Это отличает мои мысли о том, что это был случайный javac, скрывающийся на моем пути, который каким-то образом вызывался.
Конечно, я полностью отключил Java и снова попытался:
> cd /Library/Java/JavaVirtualMachines
> ls
jdk1.7.0_55.jdk
jdk1.8.0_05.jdk
> sudo rm -rf *
> ls
<<empty>>
> java -version
java version "1.6.0_65"
> javac -version
javac 1.6.0_65
> which javac
/usr/bin/javac
Затем я повторно загрузил новую копию установщика и запустил его.
> java -version
java version "1.8.0_05"
> javac -version
javac 1.7.0_21
Update
Я попытался удалить все JDK, XCode и все инструменты для разработчиков и снова установить свежие. Те же результаты.
Тем не менее, я все еще в растерянности - куда мне идти? Как получить javac 1.8 для установки?