Solo Mountain Lion con Java 7


39

Ho eseguito un'installazione pulita di Mountain Lion e installato JDK7.

java -versionin Terminal ritorna java version "1.7.0_05"correttamente, le Preferenze Java e alcuni altri programmi Java (come Eclipse) generano richieste di installazione di Java SE 6.

Posso avviare Eclipse perfettamente dalla riga di comando con Java 7.

C'è un modo per farlo funzionare senza dover installare Java 6?


1
Questo è davvero incasinato. Perché mai questo non è ancora stato risolto? La maggiore sicurezza non è la motivazione principale per cui Apple ha rinunciato al controllo sulla procedura di aggiornamento di Java? Perché allora OSX mi richiede ancora di installare un Java obsoleto? Yikes!
gentmatt,

@gentmatt Java 7 non è un semplice aggiornamento per Java 6: è più come cambiare i sistemi operativi. Peccato che le cose si rompano usando la versione più grande ed entrambe le versioni principali vengono aggiornate per le correzioni di sicurezza
user151019

@gentmatt Apple non voleva più Java e lo abbandonava essenzialmente. Oracle ha scelto di raccogliere la palla.
Thorbjørn Ravn Andersen,

1
È ancora stupido richiedere Java 6, dato che ora è deprecato ...
Donal Fellows

Risposte:


27

JDK 7 verrà installato in /Library/Java/JavaVirtualMachines/1.7.0.jdk, JDK 6 in / System / Library / Java / JavaVirtualMachines.

Per indurre OS X ad accettare Java 7 invece di proporre di installare Java 6 è sufficiente un semplice link simbolico:

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 maggior parte dei programmi Java funzionerà con questo piccolo hack senza la necessità di installare Java 6. Le preferenze Java di OS X (e forse alcuni altri) non saranno come sembra che controlli esplicitamente la versione di JVM all'avvio.


1
La seconda riga non dovrebbe avere "su", dovrebbe essere "sudo ln -s ....."
David Morales,

3
Ho appena fatto una nuova installazione incluso JDK 7u9, ed è stato installato /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk; le istruzioni hanno funzionato bene altrimenti.
Geoffrey Wiseman,

3
Fai attenzione al collegamento simbolico ... Apple ha rilasciato di recente l'aggiornamento per la protezione 1.6. Se si applica questo aggiornamento da Apple, il collegamento simbolico sembra ingannare l'aggiornamento e installa l'aggiornamento 1.6 nel punto in cui punta il collegamento simbolico, ovvero Oracle 1.7.

Questo potrebbe rompere le cose se un programma Java richiede Java 6 e non 7 potrebbe rompersi quando si utilizza l'altra versione.
user151019

Ecco una soluzione migliore se siete su Mavericks: stackoverflow.com/questions/19563766/...
jedesah

4

Nota: se hai qualcosa che ha davvero bisogno di java6 e non funziona con java7, potresti voler tenere a bada l'installazione di java7. Il motivo è che potrebbe essere un po 'complicato provare a mantenere sia il 6 che il 7 sullo stesso macintosh, poiché il 7 pkg fa un po' di confusione con alcuni degli articoli apple-6-java, come descritto di seguito. Quindi, cercherò alcune istruzioni dettagliate su come mantenere 6 e 7 sullo stesso mac prima di distribuirlo ... Vedi anche http://reviews.cnet.com/8301-13727_7-57533880-263/ java-preferenze-mancanti-dopo-ultimo-os-x-java-aggiornamento / il 18 ottobre 2012.

DETTAGLI Lo script di shell preinstallato in jre-7u9-macosx-x64.dmg rimuove solo il pref-panel di Apple (così come il plug-in), senza preavviso, di seguito.

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

=== E lo script post-installazione imposta un collegamento simbolico ===

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

-2

Mountain Lion con Java 7 da solo

Sei sulla strada giusta ... 

Senza installare Java 6

... sono previsti prompt da installare, come descritto nella domanda.

Quindi la mia breve risposta è sì, puoi avere Java 7 da solo; ma non senza un'installazione di Java 6.

Provare:

  1. consentire l'installazione di Java di Apple
  2. rimuovere, dalle due directory seguenti, le versioni di Java che non sono più necessarie:

    / Library / Java / JavaVirtualMachines

    / System / Library / Java / JavaVirtualMachines

(Per un caso come questo, credo che puoi tranquillamente ignorare i soliti consigli per non interferire con le /Systemcose.)


2
Java 7 è installato in / Library / Java / JavaVirtualMachines mentre Java 6 è in / System / Library / Java / JavaVirtualMachines L'eliminazione di 1.6.0.jdk da / System / Library / Java / JavaVirtualMachines fa apparire di nuovo la finestra di installazione. Ciò che sembra funzionare è creare un link simbolico 1.6.0.jdk (sotto / System / ...) a 1.7.0.jdk (sotto / Library / ...). I programmi Java che non controllano la versione Java funzionano correttamente (i blocchi delle Preferenze Java all'avvio in quanto sembra verificare se Java 5 o 6 è installato)
Nicolas

Fantastico: vuoi aggiungere la tua risposta? Per favore, vota il mio verso il basso - Non mi offenderò - l'ipotesi era chiaramente errata per la domanda, un voto verso il basso aiuterà altri utenti a non fare ipotesi allo stesso modo errate per problemi relativi a Java.
Graham Perrin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.