Como encontrar meu JAVA_HOME atual no ubuntu?

55

Como encontrar meu JAVA_HOME atual no ubuntu? Eu tenho que definir o caminho java_home ao instalar o maven.

Samitha Chathuranga
fonte

Respostas:

84

Digite o terminal,

echo $JAVA_HOME

Exibe o caminho da variável JAVA_HOME.

Se nada aparecer, defina-o com este

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

Isso será diferente de acordo com o seu tipo e versão do JDK

Para exibir, siga o primeiro comando.

Siga esta postagem para usar JDKs diferentes ou alternar entre JDKs

Aprofundar
fonte
Fornece "/ usr / lib / jvm / java-6-sun". Mas eu instalei o java 7. Quando o verifico usando "java -version", ele fornece a versão java "1.7.0_45" Java (TM) SE Runtime Environment (compilação 1.7.0_45-b18) VM do servidor Java HotSpot (TM) (compilação 24.45-b08, modo misto)
Samitha Chathuranga
2
em seguida, execute o segundo comando para definir a variável JAVA_HOME. NOTA:JAVA_HOME doesn't make jdk default, it just makes JAVA_HOME variable set to a path & if you want to use different jdk installed on same machine then check my answer, I have edited it.
Aprofundar
você deve colocá-lo em / etc / environment
keiki
@ Jax-L Mas agora, quando eu der eco JAVA_HOME, ele será exibido como "JAVA_HOME". O caminho que eu dei não está exibindo ... ???
Samitha Chathuranga
2
a exportação funciona apenas até você reiniciar. Ou você adiciona a exportação ao script de login .bashrc. Mas a maneira correta para definir essas variáveis de ambiente está em / etc / environment
keiki
34

Se você possui o JDK 1.6 (correspondente ao Java 6) ou uma versão mais recente instalada, deve ter um programa nomeado jrunscriptno seu PATH. Você pode usar isso para encontrar o correspondente JAVA_HOME. Exemplo:

$ jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
/opt/local/jdk1.7.0_76/jre

Você pode definir a variável de ambiente assim:

$ export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

Observe que o JRE não inclui jrunscript, portanto, isso funcionará apenas se você instalar o JDK, não apenas o JRE.

Rob Mayoff
fonte
Isso foi muito para descobrir que eu precisava ir um diretório mais fundo, mas obrigado.
precisa saber é
15

Outra opção portátil é extrair o caminho absoluto do JDK de javac:

export JAVA_HOME=`type -p javac|xargs readlink -f|xargs dirname|xargs dirname`

O javaccaminho absoluto é passado dirnameduas vezes para remover /bin/javacdo final. A extração completa do diretório é a seguinte:

$ type -p javac
/usr/bin/javac

$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-8-oracle/bin/javac

$ dirname /usr/lib/jvm/java-8-oracle/bin/javac
/usr/lib/jvm/java-8-oracle/bin/

$ dirname /usr/lib/jvm/java-8-oracle/bin/
/usr/lib/jvm/java-8-oracle/
rzymek
fonte
11
pode-se usar type -p javac|xargs readlink -f|xargs dirname|xargs dirname(sem a parte de exportação) para conhecer o diretório sem configurá-lo.
Mina Michael #
Exatamente o que eu estava procurando! Resposta brilhante!
Silviu Burcea
7

Para levar em conta o mecanismo de atualização-alternativas:

$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'

Você pode definir a variável de ambiente assim:

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"
Francisco
fonte
Isso não fornece o JAVA_HOME, pois ele ainda terá o final /jre. Você pode tentarexport JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
James Brusey 25/07
7

Basta executar um comando

 sudo update-alternatives --config java

Vai dar algo como

Es gibt nur eine Alternative in Link-Gruppe java (die /usr/bin/java bereitstellt): /usr/lib/jvm/java-8-oracle/jre/bin/java

A partir disso, você tem / usr / lib / jvm / java-8-oracle / como home do java. Agora você pode exportá-lo para a variável JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/

Agora faça eco de $ JAVA_HOME mostrá-lo

vimal krishna
fonte
1

Eu uso isso no Ubuntu LTS (14.04 / 16.04):

[ -L /etc/alternatives/java ] && 
  export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"
ggrandes
fonte
0

Para Java 9 e posterior:

Esta resposta https://askubuntu.com/a/657468/963 usa o mecanismo JavaScript Nashorn incluído Nashorn para imprimir a java.homepropriedade do sistema. Nashorn está sendo preterido, portanto, uma alternativa é usar o jshellintroduzido no Java 9.

echo 'System.out.println(java.lang.System.getProperty("java.home"));' | jshell  -

que no meu sistema Ubuntu 18.10 imprime:

/usr/lib/jvm/java-11-openjdk-amd64
Thorbjørn Ravn Andersen
fonte