Mountain Lion nur mit Java 7

39

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

java -versionWenn Terminal java version "1.7.0_05"korrekt zurückgibt , werden Sie nach wie vor von Java-Einstellungen und einigen anderen Java-Programmen (wie Eclipse) aufgefordert, 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?

Nicolas
quelle
1
Das ist wirklich durcheinander. Warum um alles in der Welt ist dies immer noch nicht behoben? Ist erhöhte Sicherheit nicht die Hauptmotivation, warum Apple die Kontrolle über das Java-Update-Verfahren aufgegeben hat? Warum fordert mich OSX dann immer noch auf, ein veraltetes Java zu installieren? Huch!
Gentmatt
@gentmatt Java 7 ist kein einfaches Update für Java 6 - es ähnelt eher einem Betriebssystemwechsel. Einige Dinge werden mit der größeren Version kaputt gehen und beide Hauptversionen werden für Sicherheitsupdates aktualisiert
user151019
@gentmatt Apple wollte kein Java mehr und hat es im Grunde genommen aufgegeben. Oracle entschied sich, den Ball abzuholen.
Thorbjørn Ravn Andersen
1
Es ist immer noch dumm, Java 6 zu benötigen, da es jetzt veraltet ist ...
Donal Fellows

Antworten:

27

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 Java 6 zu installieren, reicht ein einfacher Symlink aus:

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 möglicherweise auch einige andere) prüfen die Version der JVM beim Start nicht explizit.

Nicolas
quelle
1
Die zweite Zeile sollte nicht "su" haben, es sollte "sudo ln -s ....." sein
David Morales
3
Ich habe gerade eine Neuinstallation durchgeführt, einschließlich JDK 7u9, und es wurde installiert /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk; die anleitung hat ansonsten prima funktioniert.
Geoffrey Wiseman
3
Achten Sie auf den Symlink ... Apple hat kürzlich das Sicherheitsupdate 1.6 veröffentlicht. Wenn Sie dieses Update von Apple anwenden, täuscht der Symlink das Update und installiert das 1.6-Update an der Stelle, auf die der Symlink verweist, z. B. in Oracle 1.7.
Dies kann zu Problemen führen, wenn ein Java-Programm Java 6 benötigt und nicht 7, wenn Sie die andere Version verwenden.
user151019
Hier ist eine bessere Lösung, wenn Sie auf Mavericks sind: stackoverflow.com/questions/19563766/…
jedesah
4

Hinweis: Wenn Sie etwas haben, das Java6 wirklich benötigt und mit Java7 nicht funktioniert, sollten Sie Java7 möglicherweise nicht installieren. Der Grund dafür ist, dass es möglicherweise etwas schwierig ist, sowohl 6 als auch 7 auf demselben Macintosh zu lassen, da die 7er-Packung einige Probleme mit den Apple-6-Java-Elementen ausführt (siehe unten). Daher werde ich nach einer schrittweisen Anleitung suchen, um 6 und 7 auf demselben Mac zu halten, bevor ich sie einsetze ... Siehe auch http://reviews.cnet.com/8301-13727_7-57533880-263/ Java-Einstellungen-fehlen-nach-neuesten-os-x-Java-Update / am 18. Oktober 2012.

DETAILS Das Vorinstallations-Shell-Skript in jre-7u9-macosx-x64.dmg entfernt nur das Apple-Einstellungsfenster (sowie das Plug-In) ohne vorherige Warnung.

#!/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}"
Vanille
quelle
-2

Berglöwe mit Java 7 allein

Sie sind auf dem richtigen Weg ... 

Ohne Java 6 zu installieren

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

Meine kurze Antwort lautet also: Ja, Sie können Java 7 alleine haben. aber nicht ohne eine Installation von Java 6.

Versuchen:

  1. Erlaube Apples Installation von Java
  2. Entfernen Sie aus den beiden folgenden Verzeichnissen die Versionen von Java, die nicht mehr benötigt werden:

    / Library / Java / JavaVirtualMachines

    / System / Library / Java / JavaVirtualMachines

(In einem solchen Fall können Sie den üblichen Rat ignorieren, um sich nicht in die Sache einzumischen /System.)

Graham Perrin
quelle
2
Java 7 wird unter / Library / Java / JavaVirtualMachines installiert, während Java 6 unter / System / Library / Java / JavaVirtualMachines installiert wird. Wenn Sie 1.6.0.jdk unter / System / Library / Java / JavaVirtualMachines löschen, wird der Installationsdialog erneut geöffnet. Anscheinend funktioniert es, 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, funktionieren einwandfrei (Java-Einstellungen werden beim Start blockiert, da anscheinend überprüft wird, ob Java 5 oder 6 installiert ist)
Nicolas,
Cool - möchtest du deine eigene Antwort hinzufügen? Bitte stimmen Sie mich ab - ich werde mich nicht beleidigen - die Vermutung war eindeutig falsch für die Frage. Eine Abwahl hilft anderen Benutzern dabei, keine ähnlich falschen Vermutungen für Java-bezogene Probleme anzustellen.
Graham Perrin