Lion de montagne avec Java 7 uniquement

39

J'ai effectué une installation propre de Mountain Lion et installé JDK7.

java -versionDans Terminal, les retours sont java version "1.7.0_05"corrects. Néanmoins, les préférences Java et certains autres programmes Java (tels que Eclipse) donnent lieu à des invites pour installer Java SE 6.

Je peux parfaitement démarrer Eclipse à partir de la ligne de commande avec Java 7.

Existe-t-il un moyen de faire fonctionner cela sans avoir à installer Java 6?

Nicolas
la source
1
Ceci est vraiment foiré. Pourquoi diable n'est-ce toujours pas réglé? La sécurité accrue n'est-elle pas la principale raison pour laquelle Apple a abandonné le contrôle de la procédure de mise à jour Java? Pourquoi alors OSX m'invite-t-il toujours à installer un Java obsolète? Beurk!
Gentmatt
@gentmatt Java 7 n'est pas une simple mise à jour pour Java 6 - cela ressemble plus à un changement de système d'exploitation. Certaines choses vont se casser en utilisant la version plus grande et les deux versions principales sont mises à jour pour des problèmes de sécurité
user151019
@gentmatt Apple ne voulait plus de Java et l'a essentiellement abandonné. Oracle a choisi de prendre la balle.
Thorbjørn Ravn Andersen
1
Il est toujours stupide d'exiger Java 6, car il est maintenant obsolète…
Donal Fellows

Réponses:

27

JDK 7 sera installé sous /Library/Java/JavaVirtualMachines/1.7.0.jdk, JDK 6 sous / Système / Bibliothèque / Java / JavaVirtualMachines.

Pour inciter OS X à accepter Java 7 au lieu de proposer l’installation de Java 6, un simple lien symbolique suffit:

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

La plupart des programmes Java fonctionnent avec ce petit bidouillage sans qu'il soit nécessaire d'installer Java 6. Les préférences Java de OS X (et peut-être d'autres) ne permettent pas, car il semble vérifier explicitement la version de la machine virtuelle au démarrage.

Nicolas
la source
1
La deuxième ligne ne devrait pas avoir "su", elle devrait être "sudo ln -s ....."
David Morales
3
Je viens de faire une nouvelle installation comprenant JDK 7u9, et il a été installé sur /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk; les instructions ont bien fonctionné autrement.
Geoffrey Wiseman
3
Faites attention au lien symbolique ... Apple a récemment publié la mise à jour de sécurité 1.6. Si vous appliquez cette mise à jour à partir d'Apple, le lien symbolique semble tromper la mise à jour et installe la mise à jour 1.6 dans la direction indiquée, à savoir la version 1.7 d'Oracle.
Cela pourrait casser des choses si un programme Java nécessite Java 6 et non 7, il pourrait se casser lorsque vous utilisez l'autre version.
user151019
Voici une meilleure solution si vous êtes sur Mavericks: stackoverflow.com/questions/19563766/…
jedesah
4

Remarque: si vous avez vraiment besoin de java6 et que cela ne fonctionne pas avec java7, vous voudrez peut-être attendre l'installation de java7. La raison en est qu’il pourrait être un peu délicat d’essayer de garder les deux 6 et 7 sur le même Macintosh, car le 7 pkg gâche quelques-uns des éléments apple-6-java, comme indiqué ci-dessous. Je vais donc chercher des instructions pas à pas pour conserver les versions 6 et 7 sur le même Mac avant de publier cette information ... Voir aussi http://reviews.cnet.com/8301-13727_7-57533880-263/ java-preferences-missing-after-latest-os-x-java-update / le 18 octobre 2012.

DÉTAILS Le script shell de préinstallation dans jre-7u9-macosx-x64.dmg supprime simplement le panneau de préférences Apple (ainsi que le plug-in), sans avertissement, ci-dessous.

#!/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

=== Et le script post-installation configure un lien symbolique ===

#!/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
la source
-2

Lion de montagne avec Java 7 seul

Vous êtes sur la bonne voie… 

Sans installer Java 6

… Les invites à installer, telles que décrites dans la question, sont à prévoir.

Donc, ma réponse courte est oui, vous pouvez avoir Java 7 seul; mais pas sans une installation de Java 6.

Essayer:

  1. permettre l'installation de Java par Apple
  2. supprimez, dans les deux répertoires ci-dessous, la ou les versions de Java qui ne sont plus requises:

    / Bibliothèque / Java / JavaVirtualMachines

    / Système / Bibliothèque / Java / JavaVirtualMachines

(Pour un cas comme celui-ci, je pense que vous pouvez ignorer les conseils habituels pour ne pas interférer avec des /Systemchoses.)

Graham Perrin
la source
2
Java 7 est installé sous / Bibliothèque / Java / JavaVirtualMachines et Java 6 sous / Système / Bibliothèque / Java / JavaVirtualMachines. La suppression de la version 1.6.0.jdk de / Système / Bibliothèque / Java / JavaVirtualMachines a pour effet de faire réapparaître la boîte de dialogue d'installation. Ce qui semble fonctionner est de créer un lien symbolique 1.6.0.jdk (sous / System / ...) vers 1.7.0.jdk (sous / Bibliothèque / ...). Les programmes Java qui ne vérifient pas la version Java fonctionnent correctement (les préférences de Java bloquent au démarrage car il semble vérifier si Java 5 ou 6 est installé)
Nicolas
Cool - voudriez-vous ajouter votre propre réponse? Veuillez voter pour le mien - je ne m'offusquerai pas - la supposition était clairement incorrecte pour la question, un vote vers le bas aidera les autres utilisateurs à ne pas émettre les mêmes suppositions erronées quant aux problèmes liés à Java.
Graham Perrin