Unterstützung für mehrere Java-Versionen unter OS X und JAVA_HOME

12

Ich weiß, dass es möglich ist, mehrere Versionen von Java unter OS X zu haben, aber ich finde es schwierig zu verstehen, wie es funktioniert.

Ich habe ein Upgrade auf Mountain Lion durchgeführt und bin jetzt echo $JAVA_HOMEleer.

Jedoch in /System/Library/Frameworks/JavaVM.framework/Versions/

1.4     1.5     1.6     A       CurrentJDK
1.4.2   1.5.0   1.6.0   Current

Wenn ich in 1.4.2 gehe und java - versionoder ausführe./java -version

Java (TM) SE-Laufzeitumgebung (Build 1.6.0 _33-b03-424-11M3720)

Warum werden all diese Versionen verwendet, wenn sie dieselbe Java-Version haben?

Dann habe ich das JDK 7 von Oracle heruntergeladen und installiert.

Wo wird normalerweise ein neues JDK installiert?

Und die letzte Frage: Wie kann ich auswählen, welche Version standardmäßig von allen Anwendungen ausgeführt werden soll?

In Win. Ich setze JAVA_HOMEauf den von C:/ProgramFiles/Java/.… mir eingegebenen Pfad: Ort zu JAVA_HOME/binund das war's.

Cris
quelle
1
Vielleicht von Interesse, da Oracle kürzlich den Begriff JRE verwendet, um das Java-Applet-Plug-in allein zu beschreiben (verwirrend!). und da Benutzer von OS X jetzt zwei verschiedene Versionen gleichzeitig verwenden können (eine Version für das Plug-In, eine andere Version für Apps, die das Plug-In nicht verwenden): Wie können verschiedene Java-Versionen auf Mountain Lion am besten verwaltet werden?
Graham Perrin

Antworten:

3

Inhalt von /System/Library/Frameworks/JavaVM.framework/Versions

Für die meisten Anwendungsfälle CurrentJDKsollte die Funktionalität der aktuellen und früheren Versionen des JDK bereitgestellt werden.

Nicht alle früheren Versionen, aber die am häufigsten benötigten:

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
quelle
14

Bevorzugen Sie eine Java-Version

Verwenden Sie Java-Einstellungen wie gewohnt.

Je nachdem, was Sie zusätzlich zu Apples Java-Distribution installiert haben, kann die erste Registerkarte des Dienstprogramms etwas anders aussehen.

Ein Beispiel ohne die bekannten Optionen für Applets und Java Web Start:

Screenshot der Java-Einstellungen

Es gibt Hintergrundinformationen dazu, wie dies auf der Befehlszeilenebene funktioniert. Das Kommandozeilen-Tool java_home meldet diese Voreinstellungen zurück.

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

Die Platzhalter-App / usr / bin / java verwendet diese Einstellungen, um die bevorzugte Java-Version auszuführen.

$ 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)

Wenn Sie JAVA_HOME in einem Startskript für Tomcat oder Maven konfigurieren, können Sie sich in das Einstellungssystem einbinden:

export JAVA_HOME=`/usr/libexec/java_home`

Bei anderen Antworten wird darauf hingewiesen, dass Java unter verschiedenen Pfaden installiert werden kann. 

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

- Aber für das, was derzeit in dieser Frage beschrieben wird, das JDK von Oracle on Mountain Lion, ist nur ein Pfad wahrscheinlich .

Graham Perrin
quelle
Danke für die Community-Bearbeitung, sollte es einen anderen Link für die Hintergrundlesung geben?
Graham Perrin
2
Java-Einstellungen werden nicht mehr unterstützt und werden tatsächlich entfernt, wenn das Java 2012-006-Update angewendet wird . Dies ist Teil der Abkehr von Apple von der Bereitstellung und Unterstützung von Java.
BryanH
@BryanH danke - diese Antwort wurde einige Monate vor Java für OS X 2012-006 gegeben - siehe die verknüpfte Frage. Beachten Sie auch, dass Apple zwar von den JRE- Distributionen abweicht, wir jedoch nicht davon ausgehen sollten , dass Apple die Unterstützung von Java einstellt .
Graham Perrin
Ja dank. Ich denke, ich sollte klarstellen, dass "Support" bedeutet, dass Apple keine technischen Fragen mehr zur Java Virtual Machine für OSX bereitstellt oder beantwortet. Es liegt an Oracle (oder einem anderen Dritten), diese JVM zu schreiben und zu warten.
BryanH
5

Seit Mac OS X 10.8.2 Build 12C60 werden in den Java-Einstellungen keine älteren Versionen mehr angezeigt .

Carlo
quelle
3

Pfade für die Installation von JDKs

Lauf:

ls -l /Library/Java/JavaVirtualMachines

Andere Pfade können verwendet werden, aber für das aktuelle JDK von Oracle, das auf Mountain Lion installiert ist, finden Sie das .jdkBundle wahrscheinlich unter diesem Pfad.

Graham Perrin
quelle