impostazione di JAVA correttamente su MAC

0

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.

  •   
  Suppongo che i programmi ottengano l'ultimo java da /System/Library/Frameworks/JavaVM.framework/Versions/Current/ e se /System/Library/Frameworks/JavaVM.framework/Versions/Current/ utilizza / usr / libexec / java_home per trovare gli eseguibili quindi finirebbe con l'uso di jdk 1.8 nel mio caso. Questa supposizione è corretta?
  • 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.
posta nev.m 24.05.2015 - 04:18
fonte

1 risposta

1

L'unico che conta se eseguire / usr / bin / java è il valore di JAVA_HOME e può essere impostato per tutti i terminali ecc. ad es. per ottenere l'ultimo 1.7 aggiungi al tuo script di shell di avvio (ad es. ~ / .bashrc)

export JAVA_HOME='/usr/libexec/java_home -v '1.7*'

Purtroppo le app (ovvero la GUI installata come pacchetti di applicazioni OS X, ad esempio Eclipse) accedono a java che è impostato nelle informazioni del pacchetto (che può essere un percorso completo a uno in / Libreria o / Sistema / Libreria o potrebbe essere / usr / bin / java) quindi devono essere esaminati caso per caso.

La differenza tra l'installazione di un JDK in / Library / Java / JavaVirtualMachines vs / System / Library / Java / JavaVirtualMachines / è che quest'ultimo è installato da Apple come parte del sistema operativo e l'altro è da una terza parte

Il CurrentJDK è il modo in cui le versioni di Apple OS X framework - nel caso di Java non penso che importi ora (in pre 1.7 giorni potrebbe essere stato come funzionava la vecchia scheda delle preferenze di Java ma è un'ipotesi)

    
risposta data 25.05.2015 - 10:50
fonte

Leggi altre domande sui tag