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.


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$ 

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 .


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.