Los componentes de java pueden ser de distintos proveedores y versiones y pueden convivir simultáneamente usando la arquitectura de update-alternatives.
Los programas que nos interesan son java para ejecutar y javac, el compilador. Para ver que versiones hay instaladas, use –list
update-alternatives --list java
Una salida de ejemplo, consistente con los siguientes ejemplos es:
/opt/java/jdk1.7.0_71/bin/java /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
Para consultar el compilador:
update-alternatives --list javac
Siendo la salida
/opt/java/jdk1.7.0_71/bin/javac /usr/lib/jvm/java-7-openjdk-amd64/bin/javac
Si bajamos la nueva versión y la descomprimimos en /opt/java/jdk1.8.0_102, tendríamos que ver algo como
ls /opt/java/ -1
jdk1.7.0_71 jdk1.8.0_102
Hay que instalar las alternativas:
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.8.0_102/jre/bin/java 3 sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.8.0_102/bin/javac 3
Siendo el formato:
update-alternatives --install EJECUTABLE NOMBRE RUTA_REAL_EJECUTABLE PRIORIDAD
Controlar tras instalar que estén y seleccionarlas, primero el java:
sudo update-alternatives --config java
Hay que seleccionar con el número la opción deseado si no es la que está actualmente marcada con *
There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 auto mode 1 /opt/java/jdk1.7.0_71/bin/java 1 manual mode * 2 /opt/java/jdk1.8.0_102/jre/bin/java 3 manual mode 3 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode Press enter to keep the current choice[*], or type selection number:
Luego, el compilador, javac:
sudo update-alternatives --config javac
There are 3 choices for the alternative javac (providing /usr/bin/javac). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac 1071 auto mode 1 /opt/java/jdk1.7.0_71/bin/javac 1 manual mode * 2 /opt/java/jdk1.8.0_102/bin/javac 3 manual mode 3 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac 1071 manual mode Press enter to keep the current choice[*], or type selection number:
Se puede comprobar que versión está activa con
java -version
java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
Tras cambiar a otra versión:
java -version
java version "1.7.0_65" OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.14.04.1) OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)