Uma maneira de todo o sistema para definir ou obter $ JAVA_HOME no Ubuntu?

7

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:

  1. Quando o Java for atualizado, o número da versão mini será alterado, o que tornará o caminho estático indisponível.
  2. Depois de alterar o JRE usado no meu sistema com update-alternatives , tenho que modificar $JAVA_HOME em .bash_profile . Esse trabalho extra é chato.
  3. Alguns programas $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.

    
por Jianwen W. 07.06.2012 / 16:26

5 respostas

5

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)))
    
por 07.06.2012 / 16:41
1

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
    
por 08.06.2012 / 01:31
0

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.

    
por 30.10.2013 / 04:49
0

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 }'))
    
por 24.02.2015 / 21:22
0

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

    
por 10.02.2015 / 18:43