2015-10-09 11 views
12

Sto provando a eseguire un'applicazione JAVA sul mio MAC OS X 10.11 (El Capitan).Perché non riesco a vedere il percorso JAVA_HOME sul mio MAC OS X 10.11?

Ho utilizzato this link per impostare JAVA_HOME sul mio MAC OS X 10.11.

sono in grado di eseguire i seguenti comandi:
java -version
which java

Tuttavia quando vado a l'applicazione Terminale su Mac e digitare echo $ JAVA_HOME, non vedo nulla. Perché è quello? Significa che il mio JAVA_HOME non è impostato correttamente?

risposta

31

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 
+0

Non hai risposto alla prima domanda qui. –

+0

@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;) –

+0

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

0

Se si desidera utilizzare jdk 1.6 per qualche motivo, che Apple ha smesso di supportare. Sarà rimosso dopo aver aggiornato Mac OS. È ancora possibile ottenere JDK 1.6 da questa pagina: https://support.apple.com/kb/DL1572?locale=zh_CN

Dopo aver installato il JDK 1.6 di nuovo, ricordate di confermare l'esportazione di directory corretta per il sistema di $ JAVA_HOME variabile in ~/.bash_profile, etc. Per me, si tratta di "/ library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/casa".

0

Troverete molte risposte su come impostare JAVA_HOME in OSX ma è difficile trovare una risposta alla domanda se l'impostazione di JAVA_HOME è necessaria.

Perché è quello? Significa che il mio JAVA_HOME non è impostato correttamente?

Su OSX, l'impostazione della variabile di ambiente JAVA_HOME è facoltativa. I programmi di installazione JRE e JDK non prevedono l'impostazione di JAVA_HOME; quindi JAVA_HOME non viene impostato è perfettamente a posto.