До появления Mountain Lion Java была в комплекте с OSX. Похоже, что во время обновления версия Java 6, которая была у меня на компьютере, была удалена, по-видимому, из-за проблемы безопасности во время выполнения Java. Это означает, что вы вынуждены установить последнюю версию, которая исправила эту проблему безопасности.
Поэтому я пошел в / Applications / Utilities / открыть Терминал и выполнил следующую команду:
java -version ==> «Нет времени выполнения Java…». Появилось окно с просьбой установить Java. Нажмите «Установить» и получите последнюю версию. установил его, но сразу после того, как я скачал и установил JDK SE 7 из Oracle.
После установки откройте настройки Java (Launchapad / Others), и вы увидите:
Теперь я знал, что у меня есть две версии Java, но какую я использую?
$ java -version java version "1.6.0_35" Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811) Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)
Так что, если я хочу использовать JDK SE 7 от Oracle?
Затем мне просто пришлось перетащить Java SE 7 в окне настроек Java на первую позицию в списке.
Этот раз:
$ java -version java version "1.7.0_05" Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)
Я сказал себе: «Давайте узнаем больше, как Java установлена в OS X». Поэтому я вырыл для большего.
Есть несколько очень полезных команд: whereis и which и ls -l .
whereis java ==> /usr/bin/java ls -l /usr/bin/java ==> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
Когда я увидел это, мне стало немного любопытно, поэтому я пошел, чтобы просмотреть каталог версий:
cd /System/Library/Frameworks/JavaVM.framework/Versions ls ==> 1.4 1.5 1.6 A CurrentJDK 1.4.2 1.5.0 1.6.0 Current
Теперь, почему у меня есть эти старые версии Java на моей машине? Я спрашивал о Спросите Разное:
http://apple.stackexchange.com/questions/57986/multiple-java-versions-support-on-os-x-and-java-home-location
$ sw_vers ProductName: Mac OS X ProductVersion: 10.8.1 BuildVersion: 12B19 $ ls -l /System/Library/Frameworks/JavaVM.framework/Versions total 64 lrwxr-xr-x 1 root wheel 10 Sep 16 15:55 1.4 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Sep 16 15:55 1.4.2 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Sep 16 15:55 1.5 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Sep 16 15:55 1.5.0 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Sep 16 15:55 1.6 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Sep 16 15:55 1.6.0 -> CurrentJDK drwxr-xr-x 7 root wheel 238 Sep 16 16:08 A lrwxr-xr-x 1 root wheel 1 Sep 16 15:55 Current -> A lrwxr-xr-x 1 root wheel 59 Sep 16 15:55 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
Кажется, что все старые версии являются ссылками на версию CurrentJDK, которая является версией Apple, кроме A и Current, которая связана с A. Я читал кое-что об этом по этому вопросу . Для меня A действует как временная переменная. Если в настройках Java вы установите это в первую позицию, Java 6 от Apple A будет иметь Java 6 от Apple. Если вы поставите на первую позицию Java SE 7 от Oracle, A укажет на эту версию. Ток указывает на А.
/java -version java version "1.6.0_35" Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811) Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)
./java -version java version "1.7.0_05" Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)
Это означает, что этот текущий каталог будет указывать на первую версию Java, найденную в настройках Java. Теперь взгляните на следующее:
lrwxr-xr-x 1 root wheel 59 Sep 16 15:55 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
Это означает, что Java от Apple фактически установлена здесь: «/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/»
Как насчет Java SE 7? Я мог поискать в файловой системе, но нашел более простой способ:
Если в настройках Java Java SE 7 находится на первой позиции ==>
$ /usr/libexec/java_home /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home
Если Java SE 6 (System) находится на первой позиции ==>
$ /usr/libexec/java_home /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Так что Java на Mountain Lion (OSX) более вероятно будет установлена в одном из следующих мест:
- / System / Library / Java / JavaVirtualMachines
- / Library / Java / JavaVirtualMachines
- ~ / Library / Java / JavaVirtualMachines
Как насчет /System/Library/Frameworks/JavaVM.framework/Versions? Кажется, что это связано с так называемым « мостом Java ». Здесь это, кажется, является родной частью установки Java на OSX.