Respostas:
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 :
Baixe e instale o Java JDK da Oracle
Assegure-se de que este Java seja usado em vez da versão do OpenJDK usando os dois comandos a seguir:
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
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
/usr/java/default
na minha caixa do CentOS 6 com o OpenJDK 1.6 e 1.7 instalado.
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.
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
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_HOME
vai 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/bashrc
I modificou a configuração a JAVA_HOME
ser:
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 grep
e sed
para analisar o resultado. Certamente alternatives
oferece 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 alternatives
parece ser apenas sobre o JRE por padrão. Recomendo que o @Niels responda ou apenas instale o Java yum
e 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.0
e, portanto, defina meu $ JAVA_HOME como /usr/lib/jvm/java_1.8.0
. Na /etc/bashrc
.
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.
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
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