En este artículo voy a explicar rápidamente cómo detectar la versión de Java instalada en un servidor Linux.



Veamos directamente algunos ejemplos.

Ejemplo 1: un servidor que no posee Java instalado

El primer paso consiste en verificar si existe algún comando llamado "java" en las rutas a ejecutables del entorno actual:

root@linuxito:~# which java
root@linuxito:~# 

No hay coincidencias, por lo que si se intenta ejecutar "java" no se encuentra el comando:

root@linuxito:~# java -version
-bash: java: command not found

Sin embargo es posible que Java esté instalado, pero el binario no esté en un ruta del entorno actual. Por ejemplo, cuando está instalado sólo para proveer el entorno de ejecución Java para un servidor Web (Glassfish, Jetty, Tomcat).

El último paso consiste en buscar un archivo ejecutable llamado "java" en todo el filesystem:

root@linuxito:~# find / -name java -type f -executable
root@linuxito:~#

No existe en todo el servidor un archivo ejecutable llamado "java". Por ende, este servidor Debian no tiene Java instalado.

Ejemplo 2: un servidor que posee JRE 1.7

En este caso, el binario java se encuentra en la ruta /usr/local/j2sdk/bin/java:

[root@lennart-os ~]# which java
/usr/local/j2sdk/bin/java

Se trata de un servidor CentOS con la versión 1.7 de Oracle:

[root@lennart-os ~]# java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

Y es el único instalado en el sistema (/usr/local/j2sdk es un enlace simbólico):

[root@lennart-os ~]# find / -name java -type f -executable
/usr/local/jdk1.7.0_51/bin/java
/usr/local/jdk1.7.0_51/jre/bin/java
[root@lennart-os ~]# file /usr/local/j2sdk
/usr/local/j2sdk: symbolic link to `jdk1.7.0_51/'

Ejemplo 3: un servidor posee Java pero no está en el PATH

En este caso, el sistema posee una versión de Java instalada en un directorio fuera del PATH. Sólo para propósito de proveer el entorno de ejecución Java a un servidor HTTP:

root@debian:~# which java
root@debian:~# 

Al buscar en el filesystem, se encuentran binarios ejecutables de nombre "java":

root@debian:~# find / -name java -type f -executable
/opt/bostasoft/bostaapp-2.5.27/jre-32/bin/java
/opt/bostasoft/bostaapp-2.5.27/jre/bin/java

Al no estar en el PATH, es necesario especificar toda la ruta para consultar la versión:

root@debian:~# /opt/bostasoft/bostaapp-2.5.27/jre/bin/java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)

Se trata de Java 1.6. Este es el caso típico en el que cierta aplicación depende de una versión específica de Java, por lo que este debe ser instalado por fuera del gestor de paquetes, en un directorio local de dicha aplicación.

Ejemplo 3: un servidor que posee Java instalado desde paquete

Cuando Java es instalado desde paquete , el binario se encuentra en un directorio protegido del servidor (típicamente /usr/bin):

root@devuan:~# which java
/usr/bin/java

Se observa que se trata de la versión 1.7 de OpenJDK:

root@devuan:~# java -version
java version "1.7.0_111"
OpenJDK Runtime Environment (IcedTea 2.6.7) (7u111-2.6.7-1~deb8u1)
OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode)

Es posible determinar si el paquete está instalado utilizando dpkg:

root@devuan:~# dpkg -l | grep openjdk
ii  openjdk-7-jre:amd64            7u111-2.6.7-1~deb8u1        amd64        OpenJDK Java runtime, using Hotspot JIT
ii  openjdk-7-jre-headless:amd64   7u111-2.6.7-1~deb8u1        amd64        OpenJDK Java runtime, using Hotspot JIT (headless)

ii indica que el paquete openjdk-7-jre está instalado.

Además se trata de la única versión instalada (/usr/bin/java es un enlace simbólico):

root@devuan:~# find / -name java -type f -executable
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
root@devuan:~# file /usr/bin/java 
/usr/bin/java: symbolic link to /etc/alternatives/java
root@devuan:~# ls -l /usr/bin/java 
lrwxrwxrwx 1 root root 22 Nov  3 09:01 /usr/bin/java -> /etc/alternatives/java
root@devuan:~# ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 46 Nov  3 09:01 /etc/alternatives/java -> /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java


Tal vez pueda interesarte


Compartí este artículo