Sono nuovo di mac (proveniente dal mondo di Windows). Ho fatto qualche lettura su come e dove JAVA HOME è impostato su una macchina mac. Ho alcune supposizioni elencate qui sotto, sarebbe bello se qualcuno potesse passare e fornire un feedback sullo stesso.
-
/ Library / Java / JavaVirtualMachines è dove vedo installato jdk 1.7 e jdk 1.8. Andando avanti se installo altre versioni di JDK presumo che verranno installate in questo percorso.
-
Vedo che / System / Library / Java / JavaVirtualMachines / ha 1.6.0.jdk installato. Suppongo che questo sia il Java 6 di Apple che è stato installato con il mio Mac di default? Inoltre, qual è la differenza tra l'installazione di un JDK in / Library / Java / JavaVirtualMachines vs / System / Library / Java / JavaVirtualMachines /.
-
/ usr / libexec / java_home -V è un'utilità che elenca tutti i jvm; s sulla macchina. Vedo giustamente JVM 1.6 (x86, i386), 1.7 e 1.8. Ho aggiunto "export JAVA_HOME =
/usr/libexec/java_home
" nel mio .bash_profile per impostare java_home su JDK 1.8. -
/ System / Library / Frameworks contiene una serie di scorciatoie al suo interno. Non voglio davvero perdere tempo a capire i framework a questo punto, ma questo sembra essere una sorta di livello di reindirizzamento per decidere quale JVM usare. C'è una cartella chiamata /System/Library/Frameworks/JavaVM.framework/Versions che contiene un mucchio di scorciatoie (1.4, 1.6, 1.6.0 ecc.) Che puntano a CurrentJDK. CurrentJDK è una scorciatoia per jdk 1.6 (/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents)
Che implicazioni ha questo? Cosa succede se JAVA_HOME punta a JDK 1.8 e /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK punta a jdk 1.6.
Significa che quando cambiamo JAVA_HOME, dobbiamo cambiare /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK?
- C'è un'altra cartella chiamata /System/Library/Frameworks/JavaVM.framework/Versions/Current/ che è un collegamento a /System/Library/Frameworks/JavaVM.framework/Versions/A. Ora, ho letto in alcuni post che
The java executables in >/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java are >not the executables that just run the java compiler etc. They are wrappers that >use /usr/libexec/java_home to find the executables.
- Quindi, sembra che ci siano 4 variabili qui, dove $ JAVA_HOME punta, dove porta / usr / libexec / java_home, dove /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK puntano a e infine dove /System/Library/Frameworks/JavaVM.framework/Versions/Current punta a. Sarebbe bello se qualcuno potesse commentare il modo corretto di configurare JAVA_HOME in modo che tutte le finestre del terminale di app, ecc. Utilizzino la stessa versione di JVM.