Mountain Lion nur mit Java 7

Ich habe eine Neuinstallation von Mountain Lion durchgeführt und JDK7 installiert.

java -versionin Terminal java version "1.7.0_05"korrekt zurückgibt, führen Java-Einstellungen und einige andere Java-Programme (z. B. Eclipse) immer noch zu Aufforderungen, Java SE 6 zu installieren.

Ich kann Eclipse perfekt von der Kommandozeile mit Java 7 starten.

Gibt es eine Möglichkeit, dies zum Laufen zu bringen, ohne Java 6 installieren zu müssen?

Das ist wirklich durcheinander. Warum um alles in der Welt ist das immer noch nicht behoben? Ist die erhöhte Sicherheit nicht der Hauptgrund, warum Apple die Kontrolle über das Java-Update-Verfahren aufgegeben hat? Warum fordert OSX mich dann immer noch auf, ein veraltetes Java zu installieren? Huch!
@gentmatt Java 7 ist kein einfaches Update für Java 6 - es ist eher wie ein Betriebssystemwechsel. Einige Dinge werden mit der größeren Version kaputt gehen und beide Hauptversionen werden für Sicherheitsfixes aktualisiert
@gentmatt Apple wollte Java nicht mehr und hat es im Wesentlichen aufgegeben. Oracle entschied sich, den Ball aufzuheben.
Es ist immer noch dumm, Java 6 zu verlangen, da es jetzt veraltet ist …

Antworten (3)

JDK 7 wird unter /Library/Java/JavaVirtualMachines/1.7.0.jdk installiert, JDK 6 unter /System/Library/Java/JavaVirtualMachines.

Um OS X dazu zu bringen, Java 7 zu akzeptieren, anstatt vorzuschlagen, Java 6 zu installieren, reicht ein einfacher Symlink:

sudo mkdir /System/Library/Java/JavaVirtualMachines
sudo ln -s /Library/Java/JavaVirtualMachines/1.7.0.jdk /System/Library/Java/JavaVirtualMachines/1.6.0.jdk

Die meisten Java-Programme werden mit diesem kleinen Hack ausgeführt, ohne dass Java 6 installiert werden muss. Die Java-Einstellungen von OS X (und vielleicht einige andere) werden dies nicht tun, da es scheint, dass die Version der JVM explizit überprüft wird, wenn sie gestartet wird.

Die zweite Zeile sollte nicht "su" enthalten, sondern "sudo ln -s ....."
Ich habe gerade eine Neuinstallation einschließlich JDK 7u9 durchgeführt und es wurde installiert in /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk; ansonsten hat die Anleitung funktioniert.
Achten Sie auf den symbolischen Link ... Apple hat kürzlich das Sicherheitsupdate 1.6 veröffentlicht. Wenn Sie dieses Update von Apple anwenden, scheint der Symlink das Update zu täuschen und das 1.6-Update dort zu installieren, wo der Symlink hinzeigt, dh Oracles 1.7.
Dies könnte Probleme verursachen, wenn ein Java-Programm Java 6 und nicht 7 erfordert, es könnte brechen, wenn Sie die andere Version verwenden.
Hier ist eine bessere Lösung, wenn Sie auf Mavericks sind: stackoverflow.com/questions/19563766/…
Bei einem ähnlichen Problem stellte ich fest, dass das Hinzufügen leerer Ordner unter „/System/Library/Java/JavaVirtualMachines/1.6.0.jdk“ und „/System/Library/Java/Support/Deploy.bundle“ ausreichte, um OS X dazu zu bringen Verwenden Sie das Oracle-JDK.

Hinweis: Wenn Sie etwas haben, das wirklich Java6 benötigt und nicht mit Java7 funktioniert, sollten Sie die Installation von Java7 zurückstellen. Der Grund dafür ist, dass es ein wenig schwierig sein könnte, sowohl 6 als auch 7 auf demselben Macintosh zu halten, da das 7-Paket einige der Apple-6-Java-Elemente durcheinander bringt, wie unten beschrieben. Also werde ich nach einer Schritt-für-Schritt-Anleitung suchen, wie man 6 und 7 auf demselben Mac behält, bevor ich das einführe ... Siehe auch http://reviews.cnet.com/8301-13727_7-57533880-263/ java-preferences-missing-after-latest-os-x-java-update/ am 18. Oktober 2012.

DETAILS Das Vorinstallations-Shell-Skript in jre-7u9-macosx-x64.dmg entfernt einfach das Apple-Voreinstellungsfenster (sowie das Plug-in) ohne Warnung unten.

#!/bin/bash
PLUGIN_BASEDIR=/Library/Internet\ Plug-Ins
PLUGIN_NAME=${PLUGIN_BASEDIR}/JavaAppletPlugin.plugin
MKDIR=`which mkdir`
RM=/bin/rm
# Remove the symlink before installation forcing ystem Preferences.app to refresh its cache
PREF_PANE_NAME=JavaControlPanel.prefpane
PREF_PANE_DEST=/Library/PreferencePanes/
# Actually removes the symlink
if [[ -h "${PREF_PANE_DEST}/${PREF_PANE_NAME}" ]]; then
     ${RM} -rf "${PREF_PANE_DEST}/${PREF_PANE_NAME}"
fi
# Create the /Library/Internet Plug-Ins if not present
if [[ ! -d "${PLUGIN_BASEDIR}" ]]; then
     ${MKDIR} -p "${PLUGIN_BASEDIR}"
fi
# If Apple's plugin is present, then delete it
if [[ -h "${PLUGIN_NAME}" ]] && [[ -d "${PLUGIN_NAME}" ]]; then
    ${RM} -rf "${PLUGIN_NAME}"
fi

=== Und das Post-Install-Skript richtet einen Symlink ein ===

#!/bin/bash
LN=`which ln`
CHOWN=`which chown`
PLUGIN_FILEPATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
PREF_PANE_NAME=JavaControlPanel.prefpane
PREF_PANE_SRC=/Library/Internet\ Plug-       Ins/JavaAppletPlugin.plugin/Contents/Home/lib/deploy/JavaControlPanel.prefpane
PREF_PANE_DEST=/Library/PreferencePanes/
if [ ! -h "${PREF_PANE_DEST}/${PREF_PANE_NAME}" ]; then
    ${LN} -s "${PREF_PANE_SRC}" "${PREF_PANE_DEST}"
fi
${CHOWN} -R root:wheel "${PLUGIN_FILEPATH}"

Mountain Lion allein mit Java 7

Du bist auf dem richtigen Weg … 

Ohne Java 6 zu installieren

… Aufforderungen zur Installation, wie in der Frage beschrieben, zu erwarten sind.

Meine kurze Antwort lautet also ja, Sie können Java 7 allein haben; aber nicht ohne eine Installation von Java 6.

Versuchen:

  1. Apples Installation von Java zulassen
  2. Entfernen Sie aus den beiden folgenden Verzeichnissen die Version(en) von Java, die nicht mehr benötigt werden:

    /Library/Java/JavaVirtualMachines

    /System/Library/Java/JavaVirtualMachines

(Für einen Fall wie diesen können Sie den üblichen Ratschlag, sich nicht einzumischen, getrost ignorieren /System.)

Java 7 wird unter /Library/Java/JavaVirtualMachines installiert, während Java 6 unter /System/Library/Java/JavaVirtualMachines installiert wird. Das Löschen von 1.6.0.jdk aus /System/Library/Java/JavaVirtualMachines führt dazu, dass der Installationsdialog erneut angezeigt wird. Was zu funktionieren scheint, ist, einen Symlink 1.6.0.jdk (unter /System/...) zu 1.7.0.jdk (unter /Library/...) zu erstellen. Java-Programme, die die Java-Version nicht überprüfen, laufen einwandfrei (Java-Einstellungen blockieren beim Start, da es zu überprüfen scheint, ob Java 5 oder 6 installiert ist)
Cool – möchtest du deine eigene Antwort hinzufügen? Bitte stimmen Sie meine Ablehnung ab – ich werde es nicht beleidigen – die Vermutung war eindeutig falsch für die Frage, eine Ablehnung wird anderen Benutzern helfen, nicht ähnlich falsche Vermutungen für Java-bezogene Probleme zu treffen.