Статьи

Несколько версий Java на OS X Mountain Lion

До Mountain Lion Java была встроена в OS X. Кажется, что во время обновления версия Java 6, которая была у меня на компьютере, была удалена.
Очевидно, что причина удаления Java во время процесса обновления была вызвана проблемой безопасности, возникшей во время выполнения Java. Таким образом, вы вынуждены установить последнюю версию, которая исправила эту проблему безопасности.

Поэтому я пошел в / Applications / Utilities / открыть терминал и выполнил следующую команду:
java -version ==> «Нет времени выполнения Java…»
Появилось окно с просьбой установить Java.Нажмите «Установить» и получите последнюю версию. Я установил ее, но сразу после загрузки и установки JDK SE 7 из Oracle.

После установки откройте настройки Java (Launchapad / Others), и вы увидите:

Теперь я знал, что у меня есть две версии Java, но какую я использую?

1
2
3
4
$ 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 на первую позицию в списке.

Этот раз :

1
2
3
4
$ 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 .

1
2
whereis java ==> /usr/bin/java
ls -l /usr/bin/java ==> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

Когда я увидел это, мне стало немного любопытно, поэтому я пошел, чтобы просмотреть каталог версий:

1
2
3
4
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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
$ 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, которая связана с AI, что-то об этом читайте по этому вопросу. Для меня A действует как временная переменная. Если в настройках Java вы установили первую позицию, то Java 6 от Apple A будет иметь Java 6 от Apple, если вы установите первую позицию, Java SE 7 от Oracle A будет указывать на эту версию. Ток указывает на A.

1
2
3
4
/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)
1
2
3
4
./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.
Очень интересная вещь, следующая информация

1
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 ==>

1
2
$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home

Если в настройках Java на первой позиции стоит Java SE 6 (System) ==>

1
2
$ /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.

Ссылка: Несколько версий Java на OS X Mountain Lion от нашего партнера по JCG Кристиана Чиовари из блога примеров кода Java .