Qual è il valore di JAVA_HOME per CentOS?


37

Ho installato java tramite yum su CentOS, tuttavia un altro programma java deve sapere qual è la variabile ambientale JAVA_HOME. So tutto sull'impostazione delle variabili ambientali, ma a cosa devo impostarlo? javaè installato /usr/bin/java, non può essere lì!

Risposte:


54

In realtà l'ho trovato,

lo è /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/. Ho scoperto cosa stava facendo update-alternatives --display javae mi ha mostrato la directory/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java


20

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 :

Installa Java

Scarica e installa Java JDK da Oracle

Rendilo primario

Assicurarsi che Java sia utilizzato al posto della versione OpenJDK utilizzando i seguenti due comandi:

Primo

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

Secondo

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

Imposta JAVA_HOME

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

oh interessante. :)
Rory,

1
Non c'è /usr/java/defaultnella mia scatola CentOS 6 con OpenJDK 1.6 e 1.7 installati.
Daniel Serodio,

@DanielSerodio Correct. Ho chiaramente descritto "Scarica e installa Java JDK da Oracle", e poi esiste.
Niels Basjes,

2

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.


Mi chiedo se c'è una buona ragione per cui l'installazione non fa questo per te se eseguito come superutente, lo trovo sempre irritante ...
Kyle Brandt

2

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


1

Ho considerato il problema se si cambia la versione di Java utilizzata con:

alternatives --config java

Quindi qualsiasi hard coded JAVA_HOMEcambierà (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/bashrcho modificato l'impostazione JAVA_HOMEper 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 grepe sedanalizzare il risultato. Sicuramente alternativesoffre 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' alternativessembra essere solo la JRE di default. Rimando alla risposta di @Niels o semplicemente installo Java yume 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.0e quindi imposta $ JAVA_HOME su /usr/lib/jvm/java_1.8.0. Nel /etc/bashrc.


0

È 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.


2
La variabile non era stata impostata.
Rory,

0

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


0

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.