Dove definirlo
Ok, prima di tutto, dobbiamo mettere in chiaro dove per impostare JAVA_HOME
.
Semplificato, è possibile definirlo in due file: ~/.bashrc
o ~/bash_profile
. Con default il primo viene eseguito per ciò che viene chiamato "shell non-login interattivi" mentre il secondo viene utilizzato per "shell di login". Una "shell di login" è esattamente ciò che ci si aspetterebbe: una shell che viene avviata dopo il login tramite la riga di comando. Una "shell interattiva non di login" è una shell che viene avviata all'interno di una GUI, ad esempio. Quindi, in base a ciò, dovremmo inserire la nostra dichiarazione di esportazione in ~/.bashrc
.
Nota a margine: mentre l'applicazione "Terminale" di OS X legge entrambi i file citati, questo non è il comportamento predefinito e pertanto non deve essere trattato come tale. E questo è il motivo per cui ho scritto una spiegazione.
Cosa fai definire
È necessario esportare JAVA_HOME nel file ~/.bashrc
in modo che ogni volta che un guscio viene aperto, viene impostata la variabile.
Su OS X, i kit di sviluppo Java e gli ambienti di runtime sono archiviati in /Library/Java/JavaVirtualMachines/
per un po 'di tempo. Dai un'occhiata qui. Questo è come appare alla mia macchina:
/Library/Java/JavaVirtualMachines/
├── jdk1.7.0_45.jdk
├── jdk1.8.0_20.jdk
├── jdk1.8.0_25.jdk
└── jdk1.8.0_51.jdk
Le sottocartelle simile a questo
jdk1.7.0_45.jdk/
└── Contents
├── Home
├── Info.plist
└── MacOS
E lì abbiamo ottenuto. Quindi, se si voleva puntare al JDK 1.7.0_45, ci si mette la seguente dichiarazione sul suo .bashrc
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home"
Per assicurarsi che i binari corretti per quella versione Java sono chiamati, si dovrebbe anche aggiungere il seguente da qualche parte dopo la dichiarazione di cui sopra:
export PATH=$JAVA_HOME/bin:$PATH
Non hai risposto alla prima domanda qui. –
@PeterVerhas Oh beh, l'ho fatto implicitamente: non è disponibile poiché non è stato esportato nel proprio dotfile. Perché una variabile di ambiente sia disponibile, deve essere impostata;) –
FYI - Questo non funziona su High Sierra. Dovevo specificare jdk1.8 e java 9 installato. L'unica soluzione era quella di eliminare Java 9. – eimmer