Como altero o valor de JAVA_HOME
no Ubuntu para apontar para o Java da Oracle?
Deve apontar para java-6-sun
ou java-6-sun-1.6.0.24
?
Como altero o valor de JAVA_HOME
no Ubuntu para apontar para o Java da Oracle?
Deve apontar para java-6-sun
ou java-6-sun-1.6.0.24
?
Respostas:
Eu coloquei a linha:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
no meu ~/.bashrc
arquivo
/usr/lib/jvm/java7-oracle
deve ser um link simbólico apontando para /usr/lib/jvm/java-7-oracle-[version number here]
.
A razão de ser um link simbólico é que, caso exista uma nova versão da JVM, você não precise atualizar seu .bashrc
arquivo, ele deve apontar automaticamente para a nova versão.
Se você deseja definir JAVA_HOME
variáveis de ambiente globalmente e no nível do sistema, o uso deve ser definido no /etc/environment
arquivo
oracle-java7-set-default
pacote faz.
Se você deseja alterá-lo globalmente e no nível do sistema;
No
/etc/environment
adicione esta linha:
JAVA_HOME=/usr/lib/jvm/java-7-oracle
$JAVA_HOME
não resolve quando usado assim PATH=$JAVA_HOME/bin
, tentei reiniciar, sem efeito. Preciso export
ou set
JAVA_HOME
neste arquivo ou no meu perfil?
para definir o Java SE Development Kit da Oracle como o Java padrão do sistema, basta fazer o download do Java SE Development Kit mais recente a partir daqui e criar um diretório em algum lugar do seu sistema de arquivos, por exemplo, /usr/java
agora extrair os arquivos que você acabou de baixar nesse diretório:
$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java
agora para definir sua JAVA_HOME
variável de ambiente:
$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000
verifique se o java do Oracle está definido como java padrão por:
$ update-alternatives --config java
você recebe algo como isto:
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /opt/java/jdk1.8.0_05/bin/java 20000 auto mode
1 /opt/java/jdk1.8.0_05/bin/java 20000 manual mode
2 /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java 1061 manual mode
Press enter to keep the current choice[*], or type selection number:
preste atenção ao asterisco antes dos números à esquerda e, se o número correto não estiver definido, escolha o número correto digitando o número e pressionando enter. agora teste seu java:
$ java -version
se você tiver algo parecido com o seguinte, está pronto:
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)
Observe também que você pode precisar de permissão root ou estar no grupo sudoers para poder fazer isso. Eu testei esta solução no ubuntu 12.04 e no Debian wheezy e funciona nos dois.
Se você deseja que essa variável de ambiente esteja disponível para todos os usuários e na inicialização do sistema, adicione o seguinte a /etc/profile.d/java.sh (crie-o, se necessário):
export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
Em seguida, em um terminal:
sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh
Minha segunda pergunta é - deve apontar para java-6-sun ou java-6-sun-1.6.0.24?
Ele sempre deve apontar para java-7-oracle
isso como um link simbólico para o mais recente instalado (assumindo que você instalou o Java a partir dos repositórios Ubuntu e agora a partir do download disponível em oracle.com).
java 6
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64
ou java 7
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
Se você estiver desenvolvendo algum tipo de desenvolvimento, precisará apontar para o JDK (Java Development Kit). Caso contrário, você pode apontar para o JRE (Java Runtime Environment).
O JDK contém tudo o que o JRE possui e muito mais. Se você estiver apenas executando programas Java, poderá apontar para o JRE ou o JDK.
Você deve definir com JAVA_HOME
base no Java atual que está usando.
readlink
imprimirá o valor de um link simbólico para o Java atual e sed
o ajustará no diretório JRE:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
Se você deseja configurar o JAVA_HOME para o JDK, deve subir mais uma pasta:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
Se você desejar usar uma versão específica do Java quando vários JDKs estiverem instalados, apenas a configuração de JAVA_HOME pode não funcionar.
Você precisa usar sudo update-alternatives --config java
para definir o Java padrão.
Veja isto ; corre
sudo update-java-alternatives --list
para listar todas as instalações Java em uma máquina por nome e diretório e, em seguida, execute
sudo update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]
para escolher qual JRE / JDK usar.
Se você deseja usar JDKs / JREs diferentes para cada tarefa Java, é possível executar alternativas de atualização para configurar um executável java por vez; você pode correr
sudo update-alternatives --config java[Tab]
para ver os comandos Java que podem ser configurados (java, javac, javah, javaws, etc). E depois
sudo update-alternatives --config [javac|java|javadoc|etc.]
associará essa tarefa / comando Java a um JDK / JRE específico.
Você também pode precisar definir JAVA_HOME para alguns aplicativos: a partir desta resposta, você pode usar
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
para JREs ou
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
para JDKs.
java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment