Підтримка декількох версій Java в OS X та JAVA_HOME


12

Я знаю, що на ОС X може бути декілька версій Java, але мені важко зрозуміти, як це працює.

Я перейшов на гірський лев і тепер echo $JAVA_HOMEпорожній.

Однак в /System/Library/Frameworks/JavaVM.framework/Versions/

1.4     1.5     1.6     A       CurrentJDK
1.4.2   1.5.0   1.6.0   Current

Коли я переходжу до 1.4.2 і виконую java - versionабо./java -version

Java (TM) SE Runtime Environment (збірка 1.6.0 _33-b03-424-11M3720)

То чому для цих версій використовуються, якщо вони мають однакову версію Java?

Потім я завантажив JDK 7 з Oracle і встановив його.

Де зазвичай встановлюється новий JDK?

І остаточне запитання: як я можу вибрати, яку версію слід запускати за замовчуванням усіма програмами?

В Win. Я встановив JAVA_HOMEзначення, яке C:/ProgramFiles/Java/.… я поклав у Path: location to JAVA_HOME/binі все.


1
Можливо, це цікавить, оскільки останнім часом Oracle використовує термін JRE для опису лише додатка Java-аплетів (заплутано!); а оскільки користувачі OS X можуть одночасно використовувати дві різні версії (одна версія для плагіна, інша версія для додатків, які не використовують цей плагін): Як найкраще керувати різними версіями Java на Mountain Lion?
Грем Перрін

Відповіді:


3

Зміст /System/Library/Frameworks/JavaVM.framework/Versions

У більшості випадків використання CurrentJDKмає забезпечувати функціональність поточної та попередньої версій JDK.

Не всі попередні версії, але найчастіше потрібні версії:

sh-3.2$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8
BuildVersion:   12A269
sh-3.2$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions
total 64
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 17 Jul 07:48 A
lrwxr-xr-x  1 root  wheel    1 17 Jul 07:47 Current -> A
lrwxr-xr-x  1 root  wheel   59 17 Jul 07:47 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
sh-3.2$ 

14

Бажана версія Java

Використовуйте налаштування Java у звичайному режимі.

Залежно від того, що ви встановили крім розповсюдження Java на Apple, перша вкладка утиліти може виглядати дещо іншою.

Приклад без знайомих варіантів аплетів та Java Web Start:

Знімок екрана налаштувань Java

Про те, як це працює на рівні командного рядка, є ознайомлення з фоном . Інструмент командного рядка java_home звітує про це налаштування параметрів.

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/1.6.0_33-b03-424.jdk/Contents/Home

Додаток / usr / bin / java використовує ці налаштування для запуску бажаної версії Java.

$ which java
/usr/bin/java

$ java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-11M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

Нарешті, налаштовуючи JAVA_HOME у сценарії запуску для Tomcat або Maven, ви можете підключитись до системи уподобань:

export JAVA_HOME=`/usr/libexec/java_home`

Відповіді в іншому місці зазначають, що Java може бути встановлена ​​на декількох контурах - 

  • / Система / Бібліотека / Java / JavaVirtualMachines
  • / Бібліотека / Java / JavaVirtualMachines
  • ~ / Бібліотека / Java / JavaVirtualMachines

- але для того, що зараз описано у питанні тут, JDK від Oracle на Mountain Lion, ймовірно , лише одна стежка .


Дякую за редагування спільноти, чи має бути інше посилання для фонового читання?
Грем Перрін

2
Налаштування Java більше не підтримуються і фактично видаляються, коли застосовується оновлення Java 2012-006 . Це частина відходу Apple від надання та підтримки Java.
BryanH

@BryanH спасибі - цю відповідь отримали за кілька місяців до Java для OS X 2012-006 - дивіться пов’язане питання. Також зверніть увагу, що поки Apple відходить від розповсюдження JRE, ми не повинні вважати, що Apple перестане підтримувати Java.
Грехем Перрін

Так дякую. Я думаю, я повинен уточнити, що "підтримка" означає, що Apple більше не надає та не відповідає на технічні запитання щодо віртуальної машини Java для OSX. Оракул (або інша третя сторона) залежить від написання та підтримки зазначеного JVM.
BryanH

5

Оскільки Mac OS X 10.8.2 Build 12C60 Java Preferences більше не відображає старіші версії.


3

Шляхи, що використовуються для установки JDK

Виконати:

ls -l /Library/Java/JavaVirtualMachines

Можуть використовуватись інші шляхи, але для поточного JDK від Oracle, встановленого до Mountain Lion, ви, ймовірно, знайдете .jdkпакет на цьому шляху.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.