Estoy instalando Apache Solr en Linux Debian (Squeeze). Se me ha indicado que instale sun-java jdk 1st. Luego me dicen que debería usar el comando sudo update-alternatives --config java
para asegurarme de que un java en particular (sun-java) sea el tiempo de ejecución predeterminado. Sin embargo, cuando ejecuto este comando, obtengo:
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode
1 /usr/bin/gij-4.4 1044 manual mode
2 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode
3 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode
Press enter to keep the current choice[*], or type selection number:
Entonces, ¿qué número debo seleccionar para tener sun-java como tiempo de ejecución predeterminado? Además, ¿qué significan exactamente los modos automático y manual? Si selecciono 3 arriba y ejecuto el comando de actualización alternativa, recibo el mismo resultado que el anterior, nuevamente nada parece haber cambiado excepto que el * está ahora frente al 3, aunque todavía se lee en modo manual.
¿Hay alguna forma de confirmar que lo que hice es correcto?
sudo update-alternatives --config javac
Así es como instalo jdk
#!/bin/bash cd /opt/ sudo mkdir java sudo tar -zxvf ~/Downloads/jdk-8u192-linux-x64.tar.gz sudo ln -s jdk1.8.0_192 current for file in /opt/java/current/bin/* do if [ -x $file ] then filename=`basename $file` sudo update-alternatives --install /usr/bin/$filename $filename $file 20000 sudo update-alternatives --set $filename $file #echo $file $filename fi done
fuente
Hay muchos otros binarios que deben vincularse, así que creo que es mucho mejor probar algo como
sudo update-alternatives --all
y elegir las alternativas correctas para todo lo demás además dejava
yjavac
.fuente
Estoy usando Ubuntu 18.04 LTS. La mayoría de las veces, cuando cambio mi
java
versión, también quiero usar la mismajavac
versión.Yo uso de
update-alternatives
esta manera, usando unajava_home
alternativa en su lugar:Instalación
Instale todas las versiones de Java en
/opt/java/<version>
, por ejemplo~$ ll /opt/java/ total 24 drwxr-xr-x 6 root root 4096 jan. 22 21:14 ./ drwxr-xr-x 9 root root 4096 feb. 7 13:40 ../ drwxr-xr-x 8 stephanecodes stephanecodes 4096 jan. 8 2019 jdk-11.0.2/ drwxr-xr-x 7 stephanecodes stephanecodes 4096 dec. 15 2018 jdk1.8.0_201/
Configurar alternativas
~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk-11.0.2/ 100 ~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk1.8.0_201 200
Declare
JAVA_HOME
(en este caso, uso un script de inicialización global para esto)~$ sudo sh -c 'echo export JAVA_HOME=\"/opt/java/current\" >> environment.sh'
Cerrar sesión o reiniciar Ubuntu (esto volverá a cargar
/etc/profile.d/environment.sh
)Uso
Cambiar la versión de java
Elija la versión que desea utilizar
~$ sudo update-alternatives --config java_home There are 2 choices for the alternative java_home (providing /opt/java/current). Selection Path Priority Status ------------------------------------------------------------ 0 /opt/java/jdk-11.0.2 200 auto mode 1 /opt/java/jdk-11.0.2 200 manual mode * 2 /opt/java/jdk1.8.0_201 100 manual mode Press <enter> to keep the current choice[*], or type selection number:
Ver versión
~$ java -version openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode) ~$ javac -version javac 11.0.2
Propina
Agregue la siguiente línea al
~/.bash_aliases
archivo:alias change-java-version="sudo update-alternatives --config java_home && java -version && javac -version"
Ahora use el
change-java-version
comando para cambiar la versión de Javafuente
Eche un vistazo a https://wiki.debian.org/JavaPackage En la parte inferior de esta página se describe otro método usando un comando del paquete java-common
fuente
Si desea cambiar el jdk de forma regular (o actualizar a uno nuevo una vez que se publique), es muy conveniente usar sdkman .
También puede utilizar herramientas adicionales como maven con sdkman.
fuente