Como definir o JAVA_HOME para Java?

303

Eu instalei uma versão do Java. Como podemos definir a $JAVA_HOMEvariável de ambiente corretamente?

Gaurav Agarwal
fonte

Respostas:

422

Você pode definir a sua JAVA_HOMEem /etc/profilecomo Petronilla Escarabajo sugere. Mas o local preferido para JAVA_HOMEou qualquer variável de sistema é /etc/environment.

Abra /etc/environmentem qualquer editor de texto como nanoou gedite adicione a seguinte linha:

JAVA_HOME="/usr/lib/jvm/open-jdk"

(o caminho do java pode ser diferente)

Use sourcepara carregar as variáveis, executando este comando:

source /etc/environment

Em seguida, verifique a variável, executando este comando:

echo $JAVA_HOME

Atualizar

Normalmente, a maioria dos sistemas Linux fonte / etc / environment por padrão. Se o seu sistema não fizer isso, adicione a seguinte linha a ~/.bashrc(Thanks @pje)

source /etc/environment
Manula Waidyanatha
fonte
2
Quando tentei rodar o Android Studio (que tem o IntelliJ IDEA como base), recebi uma mensagem de erro muito semelhante à @ advocate's: "'tools.jar' parece não estar no caminho de classe do Android Studio." Depois de mexer muito com o JAVA_HOME sem sucesso, decidi dar uma olhada no studio.sh, o shellscript que inicia o Android Studio. Como um palpite, defini JDK_HOME para o mesmo valor esperado para JAVA_HOME e pronto! É instalado sem grandes problemas.
Hilton Fernandes
3
Para aqueles que desenvolvem software, não coloque seu JAVA_HOME em / etc / environment a menos que queira reiniciar toda vez que alternar as versões do JDK.
HDave 20/09/16
2
Esta é uma solução temporária, como outros apontaram. Ninguém gostaria de executar o código-fonte toda vez que reiniciar seu bash.
yuranos87
6
Como outros já apontaram, isso não fica entre as sessões do terminal. O que eu fiz para resolver isso foi adicionar a linha source /etc/environmentna parte superior do meu arquivo de configuração do bash ~/.bashrcpara que ele carregue todas as minhas configurações de ambiente na inicialização. Trabalhando para mim até agora.
Pj 11/11
2
@sedulam Atualizei a resposta
Manula Waidyanatha
79

Para definir JAVA_HOMEvariável de ambiente, faça o seguinte:

  1. Inicie o Terminal pressionando Ctrl+ Alt+ Tno teclado.
  2. Digite o seguinte comando:
    $gksudo gedit /etc/environment
  3. Dependendo de onde você instalou o Java, será necessário fornecer o caminho completo. Neste exemplo, instalei o Oracle JDK 7 no /usr/lib/jvm/java-7-oraclediretório
    Role até o final do arquivo e digite o seguinte:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Salve seu arquivo e saia do gedit .
  5. Por fim, recarregue o PATH do sistema com o seguinte comando:
    $. /etc/environment

O método acima evitará que você tenha que executar os comandos toda vez que fizer login no seu computador.

Petronilla Escarabajo
fonte
5
Como faz. / etc / ambiente funciona?
Sudip Bhandari
1
A adição do exportcomando é necessária no /etc/environment?
Pkaramol
@pkaramol Eu tive que adicionar a exportação JAVA_HOME no 16.04LTS para carregá-lo na inicialização.
adeen-s
3
@ adeen-s Você adicionou exportuma linha /etc/environmente ajudou? Esse arquivo contém definições de variáveis ​​analisadas como =pares de nome-valor delimitados; seu conteúdo não é executado como comandos. (Veja man pam_env.) Portanto, a menos que você esteja tratando o arquivo separadamente como se fosse um script (como passando /etc/environmentpara bash's ./ sourcebuiltin), eu não esperaria que isso funcionasse.
Eliah Kagan 17/08/19
> Como faz. / etc / ambiente funciona? -. (dot) carrega comandos de um arquivo askubuntu.com/a/232938/189965
Roman Bekkiev
37

Se você não conhece o caminho e só possui o openJDK instalado, pode digitar update-alternatives --config javae deve encontrar o caminho. Para definir a variável, você pode escrever JAVA_HOME=<PATH>seguido por export JAVA_HOME. Observe que não há espaço ao declarar a variável. Para verificar se a variável está armazenada, basta digitar echo $JAVA_HOMEpara verificar.

Erro
fonte
Parece que seria estático. Se eu remover o openjdk-7 e instalar o openjdk-9, o JAVA_HOME não apontará para o lugar errado? Como isso pode ser dinâmico?
DavidJ
3
Alterando manualmente. Mais uma vez, você é o caminho torna-se dinâmica ....
HDave
O que @HDave significa é que, em certos casos, você pode querer que JAVA_HOME aponte para uma versão java específica, portanto, tornar a atualização dinâmica de JAVA_HOME talvez não seja o que você deseja.
Maciej
Eu gosto desta resposta. Testei com eco e vi meu caminho. No entanto, estou confuso porque eu ainda estou recebendo JAVA_HOME variável de ambiente não está definido quando eu corro mvn -version
Winnemucca
1
Eu escrevi essa resposta de volta quando eu era mais ignorante. Definir a variável conforme descrito afetará apenas sua sessão atual do terminal e não será persistida. A maneira correta é executar, update-alternatives --install <link> <name> <target> <priority> por exemplo:update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1
Erro