Um pouco hacky, mas coloque essa linha no seu /etc/profile
para defini-lo em todo o sistema:
export JAVA_HOME=$(dirname $(dirname $(readlink -e /usr/bin/javac)))
Gostaria de saber se o próprio Ubuntu fornece uma maneira de todo o sistema para localizar o atual JAVA_HOME
ou se há lugar certo para definir JAVA_HOME
.
O Mac OS X faz isso bem, pois o comando /usr/libexec/java_home
retorna a corrente JAVA_HOME
. Mas para o Ubuntu, os materiais que encontrei sempre me disseram para definir o $JAVA_PATH
apontando para um caminho estático, que é armazenado em ~/.bash_profile
.
Acho, no entanto, que essa abordagem tem várias desvantagens:
update-alternatives
, tenho que modificar $JAVA_HOME
em .bash_profile
. Esse trabalho extra é chato. $JAVA_HOME
-requiridos não estão cientes de .bash_profile
. Eu tenho que definir $JAVA_HOME
em seu script de inicialização, portanto, uma maneira padrão e fácil de obter $JAVA_HOME
parece importante para mim. Bem, qualquer conselho é bem-vindo. Obrigado.
Você pode definir variáveis de ambiente em /etc/environment
, que é configurado pelo PAM. Também deve haver links simbólicos em /usr/lib/jvm
, que não mudam com versões menores.
JAVA_HOME=/usr/lib/jvm/java-6-sun
Definir o perfil do sistema de caminhos
Edite o arquivo de caminho do sistema / etc / profile
sudo gedit /etc/profile
Adicione as seguintes linhas no final
JAVA_HOME=/usr/lib/jvm/jdk1.7.0
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH
Para o link para o guia completo de instalação.
Se você tem certeza de que o comando 'java' pode ser chamado, isso não funcionaria para você?
export JAVA_HOME=$(dirname $(java -XshowSettings:properties -version 2>&1 | grep 'java\.home' | awk '{ print $3 }'))
A solução aceita por user13742 assume que o servidor definitivamente tem o Java instalado. Caso você esteja adicionando isso a um script centralizado para muitos servidores, ele dará alguns erros como:
dirname: missing operand
Try 'dirname --help' for more information.
Para evitar isso e configurar JAVA_HOME apenas se o servidor tiver um ambiente Java, um pequeno aprimoramento é:
if [ -f "$(which javac)" ]; then
export JAVA_HOME=$(dirname $(dirname $(readlink -e $(which javac))))
fi
Eu também incorporei a mudança do SimonB para usar which
para encontrar onde a instalação está.