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

92

Seguí todas las instrucciones indicadas en esta pregunta , pero Estoy encontrando algunos problemas con la última parte del mismo.

En realidad, tengo la versión 6.22 de Java y me gustaría actualizarla a la versión 6.30.

Entonces, después de mover el directorio extraído java-6-oracle a /usr/lib/jvm , no 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í está la salida si hago un ls en dir /usr/lib/jvm :

  

matteo @ matteo-ThinkPad-SL: / usr / lib / jvm $ ls -l

     

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é debo hacer ahora?

PIEZA AGREGADA

Bajo la sugerencia de @fossfreedom, ejecuté el script de todos modos y en realidad actualicé la versión java.

Infact si ejecuto el comando java -version outpu será el siguiente:

matteo@matteo-ThinkPad-SL:~$ 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 -version me da la versión anterior instalada:

matteo@matteo-ThinkPad-SL:~$ javac -version
javac 1.6.0_22

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

Java Version 1.6.0_22 from Sun Microsystems Inc.

¿Qué está mal?

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

¿Cómo puedo actualizarlos?

OTRA PARTE AGREGADA

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

matteo@matteo-ThinkPad-SL:~$ 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 en el complemento del navegador Java.

¿Alguna idea?

    
pregunta Matteo 13.04.2012 - 10:46

5 respuestas

85

Re tu primera pregunta:

posiblemente puede estar confundido de que el script webupd8 es 0.5b. Esa es la versión del script, no se refiere a la versión java.

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

Sospecho que necesitas 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 de:

sudo update-alternatives --config javac

Con respecto a la configuración del complemento de Java Chrome.

La pregunta maestra:

¿Cómo instalo Oracle JDK 6?

incluye esta información, ya que su estructura de carpetas 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/
    
respondido por el fossfreedom 13.04.2012 - 12:37
37

Consulte 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 usar diferentes JDK / JRE para cada tarea de Java, puede ejecutar alternativas de actualización para configurar un ejecutable Java a la vez; puedes correr

sudo  update-alternatives --config java[Tab]

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

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

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

Es posible que también debas configurar JAVA_HOME para algunas aplicaciones: desde esta respuesta puedes usar

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

para JREs, o

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

para JDKs.

    
respondido por el WillC 10.02.2016 - 01:43
25

Creo que deberías echar un vistazo al comando update-java-alternatives del paquete java-common y a los archivos *.jinfo que usa. Con eso deberías poder cambiar completamente entre las instalaciones de java (independientemente de JDK, JRE, ...).

    
respondido por el Johannes Wachter 13.04.2012 - 14:08
4

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 múltiples JVMs

#!/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 se han desempaquetado las JVM y ejecute:

/opt/install-java.sh

Siguiente uso:

update-alternatives --config java
    
respondido por el Ricardo Jl Rufino 24.10.2016 - 02:59
1

Si va a configurar manualmente las alternativas para javac javaws javadoc o cualquier otro comando relacionado con java, es posible que desee convertirlos en esclavos del java alternativo.

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 - modo automático   La mejor versión del enlace es /opt/jdk1.8.0_74/bin/java   El enlace actualmente apunta a /opt/jdk1.8.0_74/bin/java   link java es / usr / bin / java   javadoc esclavo es / usr / bin / javadoc /opt/jdk1.8.0_74/bin/java - prioridad 0   javadoc esclavo: /opt/jdk1.8.0_74/bin/javadoc

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

    
respondido por el Thiago 01.02.2017 - 13:01

Lea otras preguntas en las etiquetas