Por que o java -version retornando uma versão diferente daquela definida em JAVA_HOME?

2

Estou tentando definir JAVA_HOME no sistema operacional Ubuntu. Copiei jdk 1.7 em /usr/lib/jvm e coloquei JAVA_HOME no arquivo /etc/profile .

O conteúdo da pasta /usr/lib/jvm é 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 arquivo /etc/profile 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 o comando java -version , 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 eu executo o comando ls -lah , 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 qual coisa eu estou perdendo? Por que o Ubuntu ainda está apontando para abrir o jdk e não para o meu jdk 7?

PS: Eu vi esta pergunta semelhante e suas respostas, mas essa questão está relacionada ao sistema operacional Windows e não para o Ubuntu, então estou repostando esta questão semelhante para o Ubuntu.

    
por Shekhar 29.09.2012 / 10:07

3 respostas

3

Você define a variável de ambiente JAVA_HOME e, em seguida, usou isso para definir seu PATH. No entanto, o caminho que você define também consiste no caminho existente. Essencialmente, você acabou de adicionar outra coisa 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 tenha o comando 'java'. Portanto, o que você está vendo é a saída da versão de uma das suas outras versões do Java.

O que eu normalmente faço no Ubuntu é olhar para o meu caminho:

echo $PATH

e, em seguida, procure possíveis caminhos da JVM próximos ao início. Nesse ponto, você tem várias opções para corrigir isso:

  1. Crie um link simbólico apontando o sistema para o novo caminho Java.

  2. Remova a versão antiga do Java e remova-a do seu caminho.

Eu optaria pela opção 2. É menos confuso simplesmente se livrar daquilo que você não precisa.

    
por 29.09.2012 / 10:45
2

Eu pessoalmente estava enfrentando exatamente o mesmo tipo de problema em uma nova instalação do Ubuntu 12.04. Tudo o que eu precisava fazer era desinstalar um pacote específico usando o seguinte comando:

sudo apt-get remove openjdk-6-jre-headless

Isso removeu o link no / etc / alternatives e o atualizou para o java 1.7 instalado

Só queria compartilhar, já que isso completa o ponto 2 na resposta do jmort253.

    
por 07.02.2013 / 20:08
1

Eu tive o mesmo problema e a resposta está oculta 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 é exibida:

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 resolvi o problema. Você também pode alterar a ordem no caminho:

de

export PATH=$PATH:$JAVA_HOME/bin

para

export PATH=$JAVA_HOME/bin:$PATH
    
por 12.09.2013 / 15:19