No Ubuntu é possível ter várias JVMs ao mesmo tempo. O padrão é selecionado com update-alternatives
. Mas isso não define a JAVA_HOME
variável de ambiente, devido a uma política do debian .
Estou escrevendo um script de inicialização (bash), que inicia um aplicativo java. Este aplicativo Java precisa da JAVA_HOME
variável de ambiente. Então, como obter o caminho da JVM atualmente selecionada por update-alternatives
?
Para o JRE, algo assim deve funcionar:
A solução da danadam pode ser facilmente adotada para recuperar o caminho JDK (ou seja, não JRE) conforme necessário:
export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))
Em
.bashrc
foi útil para mim.Então, você está dizendo que este comando não faz nada para você?
Eu instalei o java com
e, em seguida, para encontrar o local
Como uma extensão da resposta danadams:
Antes de tudo, instale o 2º Java JRE como a 3ª opção java, com prioridade "3":
Então, você pode listá-los:
Você pode definir a alternativa manualmente, usando isto:
Então, seu script pode configurá-lo rapidamente, assim:
Isso ilustra melhor o que o comando 'sed' está fazendo. Embora você ainda precise definir os links para javaw e javac, etc, também, cada um feito separadamente.
Um tempo atrás eu criei um tutorial no fórum do Ubuntu sobre como instalar o JRE/JDK mais recente do site Java. Ele também aborda como habilitá-lo em todo o sistema, adicionando o local JRE/JDK à variável PATH. Se desejar, você também pode adicionar JAVA_HOME ao script, mencionado no final do tópico.
Confira: http://ubuntuforums.org/showthread.php?t=1437100
Se o java estiver configurado com
update-alternatives
ou tiver sido adicionado à sua variável PATH manualmente, não"/usr/bin/java"
será necessário codificar permanentemente. Eu uso esta solução no meu .bashrc:export JAVA_HOME=$(readlink -m $(which java)/../..)