Obsługa wielu wersji Java w lokalizacji OS X i JAVA_HOME

12

Wiem, że możliwe jest posiadanie wielu wersji Javy na OS X, ale trudno mi zrozumieć, jak to działa.

Uaktualniłem do Mountain Lion i teraz echo $JAVA_HOMEjest pusty.

Jednak w /System/Library/Frameworks/JavaVM.framework/Versions/

1.4     1.5     1.6     A       CurrentJDK
1.4.2   1.5.0   1.6.0   Current

Kiedy wchodzę do 1.4.2 i wykonuję java - versionlub./java -version

Środowisko wykonawcze Java (TM) SE (kompilacja 1.6.0 _33-b03-424-11M3720)

Dlaczego więc wszystkie te wersje są używane, jeśli mają tę samą wersję Java?

Następnie pobrałem JDK 7 z Oracle i zainstalowałem go.

Gdzie zwykle instalowany jest nowy JDK?

I ostatnie pytanie: jak wybrać, która wersja powinna być domyślnie uruchamiana przez wszystkie aplikacje?

W Win. Ustawiłem JAVA_HOMEna C:/ProgramFiles/Java/.… I umieścić w Path: lokalizacja do JAVA_HOME/bini to wszystko.

Cris
źródło
1
Być może interesujące, ponieważ Oracle ostatnio używa terminu JRE do opisania samej wtyczki apletu Java (mylące!); a ponieważ użytkownicy OS X mogą teraz jednocześnie używać dwóch różnych wersji (jedna wersja dla wtyczki, inna wersja dla aplikacji, które nie używają wtyczki): Jak najlepiej zarządzać różnymi wersjami Java w Mountain Lion?
Graham Perrin

Odpowiedzi:

3

Zawartość /System/Library/Frameworks/JavaVM.framework/Versions

W większości przypadków użycia CurrentJDKpowinien zapewniać funkcjonalność bieżących i wcześniejszych wersji JDK.

Nie wszystkie poprzednie wersje, ale najczęściej wymagane wersje:

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$ 
Graham Perrin
źródło
14

Preferowanie wersji Java

Używaj Preferencji Java w normalny sposób.

W zależności od tego, co zainstalowałeś oprócz dystrybucji Java firmy Apple, pierwsza karta narzędzia może wyglądać nieco inaczej.

Przykład bez znanych opcji dla apletów i Java Web Start:

Zrzut ekranu z preferencjami Java

Istnieje pewne podstawowe informacje na temat tego, jak to działa na poziomie wiersza poleceń. Narzędzie wiersza polecenia java_home zgłasza to ustawienie preferencji.

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

/ Usr / bin / java zastępczy aplikacja sprawia, że korzystanie z tych ustawień uruchomić preferowaną wersję 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)

Wreszcie podczas konfigurowania JAVA_HOME w skrypcie uruchamiania dla Tomcat lub Maven możesz podłączyć się do systemu preferencji:

export JAVA_HOME=`/usr/libexec/java_home`

W innych odpowiedziach zauważ, że Java może być zainstalowana na kilku ścieżkach - 

  • / System / Library / Java / JavaVirtualMachines
  • / Library / Java / JavaVirtualMachines
  • ~ / Library / Java / JavaVirtualMachines

- ale dla tego, co obecnie opisano w pytaniu tutaj, JDK z Oracle na Mountain Lion, prawdopodobna jest tylko jedna ścieżka .

Graham Perrin
źródło
Dzięki za edycję społeczności. Czy powinien istnieć inny link do czytania w tle?
Graham Perrin
2
Preferencje Java nie są już obsługiwane i są faktycznie usuwane po zastosowaniu aktualizacji Java 2012-006 . Jest to część odejścia Apple'a od zapewniania i wspierania Java.
BryanH
@BryanH dzięki - ta odpowiedź została udzielona kilka miesięcy przed Java dla OS X 2012-006 - patrz powiązane pytanie. Również należy pamiętać, że podczas gdy jabłko oddala się od rozkładów na JRE, powinniśmy nie zakładać, że Apple przestanie wspierać Java.
Graham Perrin,
Tak, dziękuję. Chyba powinienem wyjaśnić, że „wsparcie” oznacza, że ​​Apple nie udziela już ani nie odpowiada na pytania techniczne dotyczące wirtualnej maszyny Java dla OSX. Oracle (lub inna strona trzecia) jest odpowiedzialna za napisanie i utrzymanie wspomnianej JVM.
BryanH
5

Ponieważ Mac OS X 10.8.2 Build 12C60 Preferencje Java nie pokazują już starszych wersji.

Carlo
źródło
3

Ścieżki używane do instalacji JDK

Biegać:

ls -l /Library/Java/JavaVirtualMachines

Można użyć innych ścieżek, ale dla bieżącego JDK z Oracle, zainstalowanego w Mountain Lion, prawdopodobnie znajdziesz .jdkpakiet na tej ścieżce.

Graham Perrin
źródło