¿Cómo configurar la versión predeterminada de Java?

125

Seguí todas las instrucciones indicadas en esta pregunta , pero encuentro algunos problemas con la última parte.

De hecho, tengo la versión 6.22 de Java y me gustaría actualizar a la versión 6.30.

Entonces, después de mover el directorio extraído java-6-oraclea /usr/lib/jvmNo sé qué hacer, ya que el script que se señala en la respuesta anterior se actualiza de java 5 a java 6.

En aras de la claridad, aquí se muestra si hago un lsin dir /usr/lib/jvm:

$ ls -l /usr/lib/jvm
total 8 
lrwxrwxrwx  1 root root   14 2011-07-12 15:18 default-java -> java-6-openjdk
lrwxrwxrwx  1 root root   14 2011-07-12 12:19 java-1.6.0-openjdk -> java-6-openjdk 
drwxr-xr-x 10 root root 4096 2012-04-12 12:06 java-6.31-oracle 
drwxr-xr-x  7 root root 4096 2012-02-24 14:43 java-6-openjdk

¿Qué debería hacer ahora?


PARTE AGREGADA

Bajo la sugerencia de @fossfreedom ejecuté el script de todos modos y en realidad actualizó la versión de Java.

De hecho, si ejecuto la java -versionsalida del comando será la siguiente:

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

Todavía hay un problema , si Irun javac -versionme da la versión anterior instalada:

$ javac -version
javac 1.6.0_22

Y si uso el probador en este enlace , me dirá que la versión es

Java Version 1.6.0_22 from Sun Microsystems Inc.

Que esta mal

Parece que Java Runtime Environment se ha actualizado, pero Java Compiler y Java plugin para el navegador no.

¿Cómo puedo actualizarlos?


OTRA PARTE AGREGADA

sudo update-alternatives --config java regresará después de la salida

$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      manual mode

Press enter to keep the current choice[*], or type selection number:

Esto tiene sentido con el hecho de que JRE se actualiza correctamente a la versión 6.31, los problemas están en el compilador de Java y el complemento del navegador de Java.

¿Algunas ideas?

Matteo
fuente
@fossfreedom No lo he intentado porque pensé que no era una buena idea ya que estaba escrito explícitamente para subir de Java 5 a 6, ¿debería hacerlo de todos modos?
Matteo
1
hmmm: ¿puede ser confuso que el script webupd8 sea 0.5b? Esa es la versión del script, no se refiere a la versión de Java. Darle una oportunidad. Veamos una captura de pantalla de cómo se ve la ventana cuando ejecuta el script.
fossfreedom
@fossfreedom, sí, eso me confundió totalmente; DI ejecutó el script. ! comprobar las modificaciones en cuestión thks mucho por ayudarme ..
Matteo
qué extraño ... nunca me encontré con eso. De todos modos, mire la respuesta a continuación, debería poder sudo update-alternativessegún el ejemplo.
fossfreedom
@fossfreedom actualizado de nuevo pregunta!
Matteo

Respuestas:

104

Re su primera pregunta:

posiblemente pueda estar confundiendo que el script webupd8 es 0.5b. Esa es la versión del script, no se refiere a la versión de Java.

Además de la configuración de la versión javac.

Sospecho que necesita dar explícitamente la ruta del compilador javac

es decir

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-6.31-oracle/bin/javac" 1

seguido por:

sudo update-alternatives --config javac

Con respecto a la configuración del complemento java chrome.

La pregunta maestra:

¿Cómo instalo Oracle JDK 6?

incluye esta información, ya que la estructura de su carpeta es ligeramente diferente, su comando de enlace debería ser:

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/
fossfreedom
fuente
Por sí solo, esto solo cambia el compilador: vea la respuesta a continuación para update-java-alternative que maneja el cambio de todas las alternativas relacionadas con java, que es 82 en mi sistema.
Greg
55

Mira esto ; correr

sudo  update-java-alternatives --list

para enumerar todas las instalaciones de Java en una máquina por nombre y directorio, y luego ejecutar

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

para elegir qué JRE / JDK usar.

Si desea utilizar diferentes JDK / JRE para cada tarea de Java, puede ejecutar alternativas de actualización para configurar un ejecutable de Java a la vez; Tu puedes correr

sudo  update-alternatives --config java[Tab]

para ver los comandos de Java que se pueden configurar (java, javac, javah, javaws, etc.). Y entonces

sudo  update-alternatives --config [javac|java|javadoc|etc.]

asociará esa tarea / comando Java a un JDK / JRE particular.

Es posible que también deba configurar JAVA_HOME para algunas aplicaciones: a partir de esta respuesta , puede usar

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

para JRE, o

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

para JDKs.

WillC
fuente
25

Creo que deberías echar un vistazo al update-java-alternativescomando del java-commonpaquete y los *.jinfoarchivos utilizados por él. Con eso, debería poder cambiar completamente entre las instalaciones de Java (independientemente de JDK, JRE, ...).

Johannes Wachter
fuente
2
Probé el update-java-alternativesy luego java -versionestaba correcto, pero el enlace $JAVA_HOMEseguía siendo incorrecto ... Cambié eso manualmente, pero me pregunto si falta algo al update-java-alternativesrespecto.
Alexis Wilke
7

En ubuntu / linux puedes cambiar la versión de java usando

update-alternatives --config java

Pero antes, necesitas instalar la versión.

Puede usar este script (./install-java.sh) para instalar varias JVM

#!/bin/sh
(
lookforJdks=$PWD
echo "Directory: $lookforJdks"
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo "$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo "$jdks" | tr '\n' ',' | cut -d',' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner java javac javadoc javah javap jconsole \
 jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
 schemagen serialver wsgen wsimport xjc jvisualvm jmc; do sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)

echo "RUN update-alternatives --config java"

Coloque este script en la carpeta donde ha desempaquetado las JVM y ejecute:

/opt/install-java.sh

Próximo uso:

update-alternatives --config java
Ricardo Jl Rufino
fuente
1

Si va a establecer manualmente las alternativas para javac javaws javadoc o cualquier otro comando relacionado con java, es posible que desee convertirlos en esclavos de la altenativa java.

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0_74/bin/java" 0 --slave "/usr/bin/javadoc" "javadoc" "/opt/jdk1.8.0_74/bin/javadoc"


update-alternatives: updating alternative /opt/jdk1.8.0_74/bin/java because link group java has changed slave links


:/opt/jdk1.8.0_74$ sudo update-alternatives --display java

java - la mejor versión del enlace de modo automático es /opt/jdk1.8.0_74/bin/java actualmente el enlace apunta a /opt/jdk1.8.0_74/bin/java link java es / usr / bin / java slave javadoc es / usr / bin / javadoc /opt/jdk1.8.0_74/bin/java - prioridad 0 esclavo javadoc: /opt/jdk1.8.0_74/bin/javadoc

Cambie /opt/jdk1.8.0_74/ con el directorio donde está instalado su jdk.

Thiago
fuente
0

Abra /etc/environmenten cualquier editor de texto y agregue la siguiente línea:

JAVA_HOME="usr/lib/jvm/open-jdk 

- La ruta de Java podría ser diferente.
Utilice la fuente para cargar las variables, ejecutando este comando:

source /etc/environment

Luego verifique la variable, ejecutando este comando:

echo $JAVA_HOME

Con esta ruta establecida, ejecute este comando:

sudo  update-java-alternatives --list

Elija su versión de Java predeterminada.

Mwongera808
fuente