(Non ero sicuro se questo dovesse andare su SU ... la migrazione è certamente un'opzione, ma più programmatori leggono le domande qui, quindi ecco qui).
Utilizzo Mac OS X 10.8.4 e ho installato JDK 1.6.0_51 di Apple e JDK 1.7.0_25 di Oracle. Recentemente ho installato l'anteprima di Oracle 1.8 JDK per alcuni software pre-release che lo richiedono. Ora, quando eseguo / usr / libexec / java_home, ottengo questo:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
1.8.0, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
1.7.0_25, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
1.6.0_51-b11-457, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_51-b11-457, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Grande.
Tuttavia, in esecuzione:
$ java -version
Ritorna:
java version "1.8.0-ea"
Ciò significa che la versione predefinita di Java è attualmente la versione pre-rilascio, che interrompe alcuni pacchetti "normali" (nel mio caso, VisualVM).
Non riesco a impostare JAVA_HOME
perché l'avvio delle applicazioni ignora le variabili di ambiente, anche quando si avvia dalla riga di comando (ad esempio $ open /Applications/VisualVM.app
).
Quindi, esiste un file che posso modificare in cui posso impostare le mie preferenze di ordinamento JVM a livello globale ?
(Per favore, non dirmi di avviare il pannello delle preferenze di Java perché semplicemente non funziona: non contiene nulla di utile ed elenca solo una delle 4 JVM che ho installato.)
Aggiornamento :
Le JVM Oracle vivono in /Library/Java/JavaVirtualMachines
. Rinominare la directory JDK 1.8 in jdk1.8.0.jvm.xyz
non cambia nulla: la java_home
trova ancora nel posto giusto e l'esecuzione di / usr / bin / java esegue ancora la JVM 1.8. Questo non è un problema con i collegamenti di sincronizzazione, ecc.
Risposte a domande simili
Sebbene questa risposta offra ciò che equivale a un hack che rimuoverà le versioni di Java dall'essere raccolte da java_home, non risponde ancora a questa domanda su come java_home sceglie il suo valore predefinito e se gli utenti possono impostarlo in modo non distruttivo .
/usr/bin/java
punta a /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
. La Versions
directory non contiene un collegamento simbolico al JDK 1.8.0. Invece, contiene una directory chiamata utilmente a A
cui Current
punta. A
non è un "JAVA_HOME. Ha una sottodirectory chiamata Commands
che ha un java
comando, ma è un binario universale opaco che fa chissà cosa. Sospetto che usi java_home
, ecc. per decidere quale JVM usare.
/usr/bin/java
è solo un collegamento simbolico