Qual é o valor de JAVA_HOME para CentOS?

37

Instalei o java através do yum no CentOS, no entanto, outro programa java precisa saber qual é a variável de ambiente JAVA_HOME. Sei tudo sobre a configuração de variáveis ​​ambientais, mas para que eu a defino? javaestá instalado /usr/bin/java, não pode estar lá!

Rory
fonte

Respostas:

54

Na verdade eu achei,

ele é /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/. Descobri o que estava fazendo update-alternatives --display javae me mostrou o diretório/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

Rory
fonte
20

Não tenho muita certeza, mas se você instalar o RPMS normal, o valor JAVA_HOME também poderá ser definido como este:

/usr/java/default/

EDIT: Acabei de verificar no meu sistema doméstico. Eu criei este arquivo:

/etc/profile.d/java.sh

Isso contém:

export JAVA_HOME=/usr/java/default/

e eu estou usando a versão oficial da Sun: jdk-1.6.0_12-fcs

EDIT: Aqui está como eu configuro o Java na minha máquina :

Instale Java

Baixe e instale o Java JDK da Oracle

Tornar primário

Assegure-se de que este Java seja usado em vez da versão do OpenJDK usando os dois comandos a seguir:

Primeiro

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

Segundo

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

Definir JAVA_HOME

Certifique-se de que todos os usuários tenham sua variável de ambiente JAVA_HOME configurada para o valor correto:

echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh
Niels Basjes
fonte
oh interessante. :)
Rory
11
Não existe /usr/java/defaultna minha caixa do CentOS 6 com o OpenJDK 1.6 e 1.7 instalado.
Daniel Serodio 28/10
@DanielSerodio Correct. Descrevi claramente "Baixe e instale o Java JDK da Oracle" e, em seguida, ele existe.
Niels Basjes
2

Você deseja configurar JAVA_HOME como o local raiz do JDK ou JRE, por exemplo:

export JAVA_HOME=/usr/java/jdk1.3

Se o JDK (kit de desenvolvimento) estiver instalado, o ypu provavelmente desejará que aponte para isso; caso contrário, use o caminho JRE (Java Runtime Environment). Em seguida, convém definir sua variável de ambiente $ PATH para incluir também o diretório bin:

export PATH=$PATH:/usr/java/jdk1.3/bin

Se você estiver usando o tomcat, também poderá ser necessário configurar CATALINA_HOME para o usuário do tomcat.

export CATALINA_HOME=/path/to/tomcat

Para definir isso para o sistema, você deseja editar seu / etc / profile ou adicionar um arquivo .sh na pasta /etc/profile.d. Para um usuário específico, você pode colocá-lo nos arquivos ~ / .profile ou ~ / .bash_profile dos usuários.

Kyle Brandt
fonte
Gostaria de saber se existe uma boa razão a instalação não faz isso para você, se correr como o usuário super, eu sempre acho que é irritante ...
Kyle Brandt
2

Abaixo está sempre trabalhando para mim perfeitamente:

[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

Isso significa que eu posso definir JAVA_HOME como /usr/java/jdk1.6.0_31

prashant
fonte
1

Eu considerei o problema de se alguém altera a versão do java sendo usada com:

alternatives --config java

Então, qualquer código embutido JAVA_HOMEvai mudar (pelo menos no Centos 6.6 que estou olhando). Ou seja, não há /usr/java.

Não parece o melhor caminho (aberto ao fracasso), mas nos 10 minutos que passei nisso parece o melhor.

Em /etc/bashrcI modificou a configuração a JAVA_HOMEser:

export JAVA_HOME=$(alternatives --display java | grep current | sed 's/link currently points to //' | sed 's|/bin/java||')

Você tem que fazer algo semelhante em MacOSX, mas sem toda a grepe sedpara analisar o resultado. Certamente alternativesoferece uma solução igualmente mais fácil.

De qualquer forma, espero ter ajudado.


Atualizar

Não, isso seria JRE_HOME. O JDK / SDK não está se mostrando tão óbvio (continuarei procurando).

O alternativesparece ser apenas sobre o JRE por padrão. Recomendo que o @Niels responda ou apenas instale o Java yume defino o JAVA_HOME para isso (o truque é onde descobri onde ele foi instalado!).

yum install java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm 

Notei que java_1.8.0é um link simbólico para /etc/alternatives/java_sdk_1.8.0e, portanto, defina meu $ JAVA_HOME como /usr/lib/jvm/java_1.8.0. Na /etc/bashrc.

HankCa
fonte
0

Isso é estranho, o ponto principal de ter uma variável de ambiente JAVE_HOME é que você não precisa especificar o caminho para cada programa, ele pode obter esse caminho procurando por essa variável.

De qualquer maneira, a maneira correta de encontrar a variável de ambiente para JAVA_HOME é usar echo:

[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09

A execução desse comando exibirá o caminho, independentemente da versão em execução, na linha de comando.

Dave Drager
fonte
2
A variável não foi definida.
Rory
0

re: Centos7, consulte o arquivo /etc/java/java.conf.

nele JAVA_HOME é indicado para estar localizado no seguinte diretório: / usr / lib / jvm / java

Eu verifiquei, é a versão correta do jdk que eu carreguei via yum, e assim ...

meu ambiente não tem JAVA_HOME definido por padrão, portanto, eu o defino em .bash_profile

theRiley
fonte
0

Descobri que o gerenciador de pacotes pode ser colocado em vários locais; portanto, usando quais (você precisará instalá-lo explicitamente se usar um contêiner) o seguinte é um pouco menos quebradiço

javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export JAVA_HOME=$javaHome

ou para JRE

javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome
Jules Clements
fonte