GNU/Linux >> Tutoriales Linux >  >> Linux

El comando "java" no ejecuta la JVM que se ha instalado

El problema

Se ha instalado un JDK/JRE de Oracle en una máquina Linux de acuerdo con las instrucciones de instalación. El comando "java" no ejecuta la JVM que se ha instalado. Las aplicaciones Java pueden fallar al ejecutarse si se encuentra un Java Runtime Environment inesperado.

Ejemplo de un servidor Red Hat:

$ java -version
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1.7.4) (rhel-1.21.b17.el6-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)

Descargo de responsabilidad :Los directorios y rutas utilizados en este artículo representan nombres de muestra ficticios que componen un ejemplo. Cualquier similitud con el código real es pura coincidencia y no pretende ser de otra manera.

La solución

Se ha instalado un nuevo JDK/JRE de Oracle según las instrucciones de instalación. Ejemplo de un servidor Red Hat:

# rpm -ivh jdk-7u6-linux-x64.rpm

El comando "java" suele ser un enlace simbólico en /usr/bin que apunta (directa o indirectamente) al ejecutable Java real. Por lo general, /usr/bin es una de las primeras entradas en la variable de entorno PATH y, por lo tanto, /usr/bin/java suele ser el primero que se encuentra si se inicia Java.

Para las siguientes posibles soluciones, supongamos que ha instalado el JDK en /usr/java/jdk1.7.0_06/.

Solución 1:Modificar la RUTA

Modifique la variable de entorno PATH para que se pueda encontrar el nuevo Oracle JRE/JDK antes de que se puedan encontrar otros JRE.

Por ejemplo:

$ export PATH=/usr/java/jdk1.7.0_06/bin:$PATH
$ java -version
java version "1.7.0_06"
Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)

Solución 2:utilice una ruta absoluta

Utilice la ruta absoluta completa al Oracle JRE/JDK recién instalado para ejecutar aplicaciones Java.

Por ejemplo:

$ /usr/java/jdk1.7.0_06/bin/java -version
java version "1.7.0_06"
Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)

Solución 3:Utilice alternativas de actualización

Use el comando llamado update-alternatives para decirle a Linux dónde encontrar el Oracle JRE/JDK que acaba de instalar.

Nota :la reparación manual de enlaces simbólicos como /usr/bin/java o /etc/alternatives/java puede hacer que el comando update-alternatives muestre valores incorrectos o incluso no se inicie. Por lo tanto, se recomienda utilizar el comando update-alternatives para instalar y configurar los enlaces simbólicos deseados en lugar de modificar los enlaces simbólicos manualmente.

Use "su" en RedHat, use "sudo" en Ubuntu:

$ su -
# update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.7.0_06/bin/java" 1
# update-alternatives --config java

There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
*+ 2           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
   3           /usr/java/jdk1.7.0_06/bin/java

Enter to keep the current selection[+], or type selection number: 3
# exit
$ java -version
java version "1.7.0_06"
Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode) 

Para obtener más información, consulte la página man de update-alternatives.

$ man update-alternatives


Linux
  1. ¿Qué sucede con la salida de un proceso que ha sido repudiado y ha perdido su terminal?

  2. ¿Ejecutar un comando que está sombreado por un alias?

  3. ¿El comando Shuf File> File deja un archivo vacío, pero comandos similares no?

  4. ¿Existe el Comando Inverso de Corte?

  5. bash:netstat:comando no encontrado.

¿Establecer +a no desarma la bandera -a?

El dispositivo Linux no muestra el espacio en disco correcto después de un cambio de tamaño

Cómo configurar el usuario predeterminado para una distribución WSL que se instaló manualmente con wsl --import

No se encontró el comando npm 'servir', aunque está instalado

¿Cómo funciona el comando ps?

¿Qué significa exactamente el dispositivo de entrada no es un TTY en la salida de ejecución de la ventana acoplable?