Elegir la versión de java JRE por defecto (Red Hat con múltiples versiones)

Si necesitamos varias versiones del JRE (Java Runtime Environment) de java en un servidor Red Hat y derivados (CentOS, Fedora, Scientific Linux,etc) es necesario conocer el modo de configurar una de ellas para ser la utilizada por defecto.

En el siguiente ejemplo tenemos un servidor con tres versiones de java JRE:

  •  jre-1.5.0
  • jre-1.6.0
  • jre-1.7.0

Para verificar este punto, y saber cual es la versión que está seleccionada por defecto en el sistema utilizamos el comando “alternatives“, que nos muestra tanto el listado de versiones de un programa/servicio concreto como el que está seleccionado por defecto. También tenemos la opción de modificar la versión y establecer la que queramos:

# /usr/sbin/alternatives --config java

There are 3 programs which provide 'java'.
Selection Command
-----------------------------------------------

1 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
2 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
*+ 3 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 1

Si a continuación consultamos la versión de java sin forzar el path vemos que efectivamente la ha modificado:

# java -version
java version "1.6.0_30"
OpenJDK Runtime Environment (IcedTea6 1.13.3) (rhel-5.1.13.3.el6_5-x86_64)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

También podéis listar la información de versiones si necesidad de entrar en el config, pero el volcado de datos es un poco más tosco:

# alternatives --display java
java - status is auto.
 link currently points to /usr/lib/jvm/jre-1.7.0-openjdk/bin/java
/usr/lib/jvm/jre-1.5.0-gcj/bin/java - priority 1500
 slave keytool: /usr/lib/jvm/jre-1.5.0-gcj/bin/keytool
 slave orbd: (null)
 slave pack200: (null)
 slave rmid: (null)
 slave rmiregistry: /usr/lib/jvm/jre-1.5.0-gcj/bin/rmiregistry
 slave servertool: (null)
 slave tnameserv: (null)
 slave unpack200: (null)
 slave jre_exports: /usr/lib/jvm-exports/jre-1.5.0-gcj
 slave jre: /usr/lib/jvm/jre-1.5.0-gcj
 slave java.1.gz: (null)
 slave keytool.1.gz: (null)
 slave orbd.1.gz: (null)
 slave pack200.1.gz: (null)
 slave rmid.1.gz: (null)
 slave rmiregistry.1.gz: (null)
 slave servertool.1.gz: (null)
 slave tnameserv.1.gz: (null)
 slave unpack200.1.gz: (null)
/usr/lib/jvm/jre-1.7.0-openjdk/bin/java - priority 170009
 slave keytool: /usr/lib/jvm/jre-1.7.0-openjdk/bin/keytool
 slave orbd: /usr/lib/jvm/jre-1.7.0-openjdk/bin/orbd
 slave pack200: /usr/lib/jvm/jre-1.7.0-openjdk/bin/pack200
 slave rmid: /usr/lib/jvm/jre-1.7.0-openjdk/bin/rmid
 slave rmiregistry: /usr/lib/jvm/jre-1.7.0-openjdk/bin/rmiregistry
 slave servertool: /usr/lib/jvm/jre-1.7.0-openjdk/bin/servertool
 slave tnameserv: /usr/lib/jvm/jre-1.7.0-openjdk/bin/tnameserv
 slave unpack200: /usr/lib/jvm/jre-1.7.0-openjdk/bin/unpack200
 slave jre_exports: /usr/lib/jvm-exports/jre-1.7.0-openjdk
 slave jre: /usr/lib/jvm/jre-1.7.0-openjdk
 slave java.1.gz: /usr/share/man/man1/java-java-1.7.0-openjdk.1.gz
 slave keytool.1.gz: /usr/share/man/man1/keytool-java-1.7.0-openjdk.1.gz
[...]

Un comentario en “Elegir la versión de java JRE por defecto (Red Hat con múltiples versiones)

  1. Hola, esta interezante el post, tengo una pregunta, si conviviendo con dos versiones, un programador quiere probar compilar con una y despues con la otra, ¿que se debe hacer?

    Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *