![Por que java -version retorna uma versão diferente daquela definida em JAVA_HOME?](https://rvso.com/image/1331450/Por%20que%20java%20-version%20retorna%20uma%20vers%C3%A3o%20diferente%20daquela%20definida%20em%20JAVA_HOME%3F.png)
Estou tentando configurar JAVA_HOME
no Ubuntu OS. jdk 1.7
Eu copiei /usr/lib/jvm
e coloquei JAVA_HOME
no /etc/profile
arquivo.
O conteúdo da /usr/lib/jvm
pasta é o seguinte:
shekhar@ubuntu:~$ ls /usr/lib/jvm/
default-java java-1.6.0-openjdk java-6-openjdk java-6-openjdk-i386 jdk1.7.0_01
java-1.5.0-gcj-4.6 java-1.6.0-openjdk-i386 java-6-openjdk-common java-7-openjdk-i386
e as últimas linhas do /etc/profile
arquivo são as seguintes:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_01
export PATH=$PATH:$JAVA_HOME/bin
Depois de terminar tudo isso, quando executo java -version
o comando, recebo a seguinte saída:
shekhar@ubuntu:~$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)
e quando executo ls -lah
o comando recebo a seguinte saída:
shekhar@ubuntu:~$ ls -lah /usr/bin/java
lrwxrwxrwx 1 root root 22 Sep 29 09:58 /usr/bin/java -> /etc/alternatives/java
shekhar@ubuntu:~$ ls -lah /etc/alternatives/java
lrwxrwxrwx 1 root root 45 Sep 29 09:58 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java
Alguém pode me dizer o que estou perdendo? Por que o Ubuntu ainda está apontando para abrir o jdk e não para o meu jdk 7?
PS: eu viisso é semelhantepergunta e suas respostas, mas essa pergunta está relacionada ao sistema operacional Windows e não ao Ubuntu, então estou repassando esta pergunta semelhante para o Ubuntu.
Responder1
Você definiu a variável de ambiente JAVA_HOME e a usou para definir seu PATH. No entanto, o caminho definido também consiste no caminho existente. Essencialmente, você acabou de adicionar algo mais ao seu caminho existente.
O caminho para o seu JDK1.7 é adicionado no final do caminho. Quando você digita 'java --version' na linha de comando, o sistema pesquisa o caminho do início ao fim até encontrar um caminho que contenha o comando 'java'. Portanto, o que você está vendo é a saída da versão de uma de suas outras versões Java.
O que normalmente faço no Ubuntu é observar meu caminho:
echo $PATH
e procure possíveis caminhos de JVM perto do início. Nesse ponto, você teria várias opções para corrigir isso:
Crie um link simbólico apontando o sistema para o seu novo caminho Java.
Remova a versão antiga do Java e remova-a do seu caminho.
Eu optaria pela opção 2. É menos confuso simplesmente se livrar do que você não precisa.
Responder2
Eu tive o mesmo problema e a resposta está escondida no PATH:
executando "$ env | grep java" mostra:
PATH=/u01/app/oracle/product/11.2.0/xe/bin:/home/rivaldo/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/java/jdk1.6.0_14/bin:/home/rivaldo/bin/eclipse.JEE.Kepler.64
JAVA_HOME=/usr/local/java/jdk1.6.0_14
JDK_HOME=/usr/local/java/jdk1.6.0_14
mas a execução de "java -version" ainda mostra:
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
Eu descobri que meu PATH tem "/usr/bin" antes de "/java/jdk1.6.0_14/bin" e fazendo "ll /usr/bin | grep java" eu obtive:
lrwxrwxrwx 1 root root 39 Jul 31 08:29 /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/jre/bin/java*
Mudei o link simbólico para o correto e problema resolvido. Você também pode alterar a ordem no caminho:
de
export PATH=$PATH:$JAVA_HOME/bin
para
export PATH=$JAVA_HOME/bin:$PATH
Responder3
Pessoalmente, eu estava enfrentando exatamente o mesmo tipo de problema em uma nova instalação do Ubuntu 12.04. Tudo o que precisei fazer foi desinstalar um pacote específico usando o seguinte comando:
sudo apt-get remove openjdk-6-jre-headless
Isso removeu o link em /etc/alternatives e o atualizou para o java 1.7 instalado
Só queria compartilhar, pois isso completa o ponto 2 da resposta de jmort253.