Risposte:
Non sono del tutto sicuro, ma se installi il normale RPMS il valore JAVA_HOME può anche essere impostato su questo:
/usr/java/default/
EDIT: ho appena controllato il mio sistema di casa. Ho creato questo file:
/etc/profile.d/java.sh
Quello contiene:
export JAVA_HOME=/usr/java/default/
e sto usando la versione ufficiale di Sun: jdk-1.6.0_12-fcs
EDIT: Ecco come ho impostato Java sul mio computer :
Scarica e installa Java JDK da Oracle
Assicurarsi che Java sia utilizzato al posto della versione OpenJDK utilizzando i seguenti due comandi:
alternatives --install /usr/bin/java java /usr/java/default/bin/java 999999 \
--slave /usr/bin/keytool keytool /usr/java/default/bin/keytool \
--slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry
alternatives --install /usr/bin/javac javac /usr/java/default/bin/javac 999999 \
--slave /usr/bin/jar jar /usr/java/default/bin/jar \
--slave /usr/bin/rmic rmic /usr/java/default/bin/rmic
Assicurarsi che tutti gli utenti abbiano la variabile di ambiente JAVA_HOME impostata sul valore corretto:
echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh
/usr/java/default
nella mia scatola CentOS 6 con OpenJDK 1.6 e 1.7 installati.
Si desidera impostare JAVA_HOME come posizione principale di JDK o JRE, ad esempio:
export JAVA_HOME=/usr/java/jdk1.3
Se è installato JDK (kit di sviluppo), è probabile che ypu lo indichi, altrimenti utilizzare il percorso JRE (Java Runtime Environment). Quindi, potresti voler impostare la variabile di ambiente $ PATH per includere anche la directory bin:
export PATH=$PATH:/usr/java/jdk1.3/bin
Se si utilizza Tomcat, potrebbe essere necessario impostare CATALINA_HOME per l'utente Tomcat.
export CATALINA_HOME=/path/to/tomcat
Per impostare questo per il sistema che si desidera modificare il proprio profilo / etc / o aggiungere un file .sh nella cartella /etc/profile.d. Per un particolare utente puoi inserirlo nei file ~ / .profile o ~ / .bash_profile degli utenti.
Di seguito funziona sempre perfettamente per me:
[user@base ~]$ locate bin/java
/usr/bin/java
/usr/bin/javac
/usr/bin/javadoc
/usr/bin/javaws
/usr/java/jdk1.6.0_31/bin/java
/usr/java/jdk1.6.0_31/bin/javac
/usr/java/jdk1.6.0_31/bin/javadoc
/usr/java/jdk1.6.0_31/bin/javah
/usr/java/jdk1.6.0_31/bin/javap
/usr/java/jdk1.6.0_31/bin/javaws
/usr/java/jdk1.6.0_31/jre/bin/java
/usr/java/jdk1.6.0_31/jre/bin/java_vm
/usr/java/jdk1.6.0_31/jre/bin/javaws
Significa che posso impostare JAVA_HOME come /usr/java/jdk1.6.0_31
Ho considerato il problema se si cambia la versione di Java utilizzata con:
alternatives --config java
Quindi qualsiasi hard coded JAVA_HOME
cambierà (almeno lo sarà sul Centos 6.6 che sto fissando). Cioè, non c'è /usr/java
.
Questo non sembra il modo migliore (aperto al fallimento) ma nei 10 minuti che ho speso per questo sembra il migliore.
In /etc/bashrc
ho modificato l'impostazione JAVA_HOME
per essere:
export JAVA_HOME=$(alternatives --display java | grep current | sed 's/link currently points to //' | sed 's|/bin/java||')
Devi fare qualcosa di simile su MacOSX ma senza tutto grep
e sed
analizzare il risultato. Sicuramente alternatives
offre una soluzione altrettanto semplice.
Spero comunque di aver aiutato.
Aggiornare
No sarebbe JRE_HOME
. Il JDK / SDK non si sta dimostrando così ovvio (continuerò a cercare).
L' alternatives
sembra essere solo la JRE di default. Rimando alla risposta di @Niels o semplicemente installo Java yum
e imposto JAVA_HOME su quello (il trucco è dove ho trovato dove è stato installato!).
yum install java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm
Ho notato che java_1.8.0
è un link simbolico a /etc/alternatives/java_sdk_1.8.0
e quindi imposta $ JAVA_HOME su /usr/lib/jvm/java_1.8.0
. Nel /etc/bashrc
.
È strano, il punto centrale di avere una variabile ambientale JAVE_HOME è quindi non è necessario specificare il percorso di ciascun programma, è possibile ottenere questo percorso cercando questa variabile.
In entrambi i casi, il modo corretto di trovare la variabile ambientale per JAVA_HOME è usare l'eco:
[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09
L'esecuzione di questo comando visualizzerà il percorso, indipendentemente dalla versione in esecuzione, dalla riga di comando.
re: Centos7, fare riferimento al file /etc/java/java.conf.
in esso è indicato che JAVA_HOME si trova nella seguente directory: / usr / lib / jvm / java
ho controllato, è la versione corretta del jdk che ho caricato tramite yum, e quindi ...
il mio env non ha JAVA_HOME impostato di default, quindi l'ho impostato in .bash_profile
Ho scoperto che il gestore pacchetti può collocare in una varietà di posizioni, quindi usando quale (dovrai installarlo esplicitamente se usi un contenitore) quanto segue è un po 'meno fragile
javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export JAVA_HOME=$javaHome
o per JRE
javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome