¿Por qué java -version devuelve una versión diferente a la definida en JAVA_HOME?

¿Por qué java -version devuelve una versión diferente a la definida en JAVA_HOME?

Estoy intentando configurar JAVA_HOMEel sistema operativo Ubuntu. jdk 1.7Lo copié /usr/lib/jvmy lo puse JAVA_HOMEen /etc/profileun archivo.

El contenido de /usr/lib/jvmla carpeta es el siguiente:

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

y las últimas líneas del /etc/profilearchivo son las siguientes:

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_01
export PATH=$PATH:$JAVA_HOME/bin

Después de terminar todo esto, cuando ejecuto java -versionel comando obtengo el siguiente resultado:

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)

y cuando ejecuto ls -lahel comando obtengo el siguiente resultado:

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

¿Alguien puede decirme qué me falta? ¿Por qué Ubuntu sigue apuntando a abrir jdk y no a mi jdk 7?

PD: lo he vistoeste similarpregunta y sus respuestas, pero esa pregunta está relacionada con el sistema operativo Windows y no con Ubuntu, por lo que volveré a publicar esta pregunta similar para Ubuntu.

Respuesta1

Estableciste la variable de entorno JAVA_HOME y luego la usaste para configurar tu RUTA. Sin embargo, la ruta que establezca también consta de la ruta existente. Básicamente, acabas de agregar algo más a tu ruta existente.

La ruta a su JDK1.7 se agrega al final de la ruta. Cuando escribe 'java --version' en la línea de comando, el sistema busca en la ruta de principio a fin hasta que encuentra una ruta que tiene el comando 'java'. Por lo tanto, lo que está viendo es la versión resultante de una de sus otras versiones de Java.

Lo que normalmente hago en Ubuntu es mirar mi ruta:

echo $PATH

y luego busque posibles rutas de JVM cerca del principio. En ese punto, tendría varias opciones para solucionar este problema:

  1. Cree un enlace simbólico que apunte al sistema a su nueva ruta de Java.

  2. Elimine la versión anterior de Java y elimínela de su ruta.

Yo optaría por la opción 2. Es menos confuso deshacerse de lo que no necesita.

Respuesta2

Tuve el mismo problema y la respuesta está oculta en la RUTA:

ejecutar "$ env | grep java" muestra:

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

pero al ejecutar "java -version" todavía se muestra:

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)

Descubrí que mi RUTA tiene "/usr/bin" antes de "/java/jdk1.6.0_14/bin" y al hacer "ll /usr/bin | grep java" obtuve:

lrwxrwxrwx 1 root root 39 Jul 31 08:29 /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/jre/bin/java*

Cambié el enlace simbólico por el correcto y el problema se resolvió. También puedes cambiar el orden en la ruta:

de

export PATH=$PATH:$JAVA_HOME/bin

a

export PATH=$JAVA_HOME/bin:$PATH

Respuesta3

Personalmente, me enfrentaba exactamente al mismo tipo de problema en una nueva instalación de Ubuntu 12.04. Todo lo que tuve que hacer fue desinstalar un paquete específico usando el siguiente comando:

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

Esto eliminó el enlace en /etc/alternatives y lo actualizó al java 1.7 instalado.

Solo quería compartir, ya que esto completa el punto 2 de la respuesta de jmort253.

información relacionada