¿Cómo configurar el Java de Oracle como el Java predeterminado en Ubuntu?

134

¿Cómo cambio el valor de JAVA_HOMEen Ubuntu para que apunte a Java de Oracle?

¿Debería señalar java-6-suno java-6-sun-1.6.0.24?

Ashish Agarwal
fuente

Respuestas:

175

Pongo la linea:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

en mi ~/.bashrcarchivo

/usr/lib/jvm/java7-oracledebe ser un enlace simbólico que apunta a /usr/lib/jvm/java-7-oracle-[version number here].

La razón por la que es un enlace simbólico es que en caso de que haya una nueva versión de la JVM, no necesita actualizar su .bashrcarchivo, debería apuntar automáticamente a la nueva versión.

Si desea establecer JAVA_HOMEvariables de entorno a nivel global y a nivel del sistema, el uso debe establecerse en el /etc/environmentarchivo.

srkiNZ84
fuente
44
O /usr/lib/jvm/java-1.6.0-openjdk-amd64 si está utilizando OpenJDK en lugar del JDK de Oracle (Sun).
pm_labs
77
Puede usar export JAVA_HOME = / usr / lib / jvm / default-java /
noomz
@noomz ¿Cómo se consigue eso si default-java no existe?
AHungerArtist
@AHungerArtist Lo obtienes si instalas openjdk u otros paquetes de Ubuntu oficialmente compatibles. Desafortunadamente, no es compatible con Oracle JDK que usa webupd8 / java ppa. De hecho, no me queda claro qué hace el oracle-java7-set-defaultpaquete.
Melvyn
¿Dónde en el archivo pones eso?
Czipperz
166

Si desea cambiarlo globalmente y a nivel de sistema;

En

/etc/environment

agrega esta línea:

JAVA_HOME=/usr/lib/jvm/java-7-oracle
metdos
fuente
27
+1 Esta es la forma recomendada help.ubuntu.com/community/EnvironmentVariables
daniel kullmann
@metdos la respuesta anterior no es global o a nivel de sistema?
Android Killer
1
@AndroidKiller ¿verificaste el enlace que señaló Daniel Kullmann?
metdos
@metdos Funciona bien, pero las variables de referencia no funcionan para mí ... $JAVA_HOMEno se resuelven cuando se usan así PATH=$JAVA_HOME/bin, intentaron reiniciar, sin efecto. ¿Tengo que exporto set JAVA_HOMEsea en este archivo o perfil?
raffian
@Raffian No estoy seguro de los diferentes casos de esquina, de esta manera funcionó perfectamente para mí, para obtener más información, le recomendaría que lea help.ubuntu.com/community/EnvironmentVariables
metdos
53

para configurar el Kit de desarrollo Java SE de Oracle como el Java predeterminado del sistema, simplemente descargue el último Kit de desarrollo Java SE desde aquí y luego cree un directorio en algún lugar que desee en su sistema de archivos, por ejemplo, /usr/javaahora extraiga los archivos que acaba de descargar en ese directorio:

$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java

ahora para configurar su JAVA_HOMEvariable de entorno:

$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000

asegúrese de que java de Oracle esté configurado como java predeterminado por:

$ update-alternatives --config java

obtienes algo como esto:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /opt/java/jdk1.8.0_05/bin/java                  20000     auto mode
  1            /opt/java/jdk1.8.0_05/bin/java                  20000     manual mode
  2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode

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

preste atención al asterisco antes de los números de la izquierda y, si no está configurado el correcto, elija el correcto escribiendo el número y presionando Intro. ahora prueba tu java:

$ java -version

si obtiene algo como lo siguiente, está listo para comenzar:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)

También tenga en cuenta que puede necesitar permiso de root o estar en el grupo de sudoers para poder hacer esto. He probado esta solución en ubuntu 12.04 y Debian wheezy y funciona en ambos.

Barracuda
fuente
1
Sí, esta solución es mucho más limpia que la aceptada.
simone cittadini
Los comentarios de @JayminGajjar que expresan gratitud no son necesarios. El mecanismo de apoyar buenas preguntas / respuestas en este sitio web es votarlas. Si no posee la reputación suficiente para hacerlo, pero tiene los comentarios suficientes, intente incluir información útil, como qué sistema y qué sistema operativo probó, y encuentra esta solución funcionando, etc.
Barracuda
@Barracuda ya voté, tienes razón sobre la información, funcionó para mí en Ubuntu 16.10 SO de servidor de 64 bits :)
Jaymin Gajjar
20

Si desea que esta variable de entorno esté disponible para todos los usuarios y al iniciar el sistema, puede agregar lo siguiente a /etc/profile.d/java.sh ( créelo si es necesario):

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Luego, en una ejecución de terminal:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

Mi segunda pregunta es: ¿debería apuntar a java-6-sun o java-6-sun-1.6.0.24?

Siempre debe apuntar java-7-oraclecomo enlaces simbólicos al último instalado (suponiendo que haya instalado Java desde los repositorios de Ubuntu y ahora desde la descarga disponible en oracle.com).

Jits
fuente
12

java 6

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64

o java 7

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

Roman Rhrn Nesterov
fuente
10

Si está haciendo algún tipo de desarrollo, debe apuntar al JDK (Kit de desarrollo de Java). De lo contrario, puede apuntar al JRE (Java Runtime Environment).

El JDK contiene todo lo que tiene el JRE y más. Si solo está ejecutando programas Java, puede apuntar a JRE o JDK.

Debería establecer en JAVA_HOME función de Java actual que está utilizando. readlinkimprimirá el valor de un enlace simbólico para Java actual y sedlo ajustará al directorio JRE:

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

Si desea configurar JAVA_HOME en JDK, debe subir una carpeta más:

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

Si desea utilizar una versión específica de Java cuando se instalan varios JDK, simplemente configurar JAVA_HOME puede no funcionar.

Debe usar sudo update-alternatives --config javapara establecer Java predeterminado.

Consulte /ubuntu/121654/how-to-set-default-java-version .

prosseek
fuente
5

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 necesite 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
Otro enfoque:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
Xdg