Use cierta versión de JRE / JDK para ciertos programas

Yo uso ArchLinux y un IDE llamado PyCharm. En su página de descarga , recomienda usar Java 6 en lugar de OpenJDK. ArchLinux tiene un paquete OpenJDK (jdk7-openjdk) que he instalado, instalado y de lo que había leído en Arch Wiki en Java , debería ser posible instalar Oracle Java 6 junto con OpenJDK 7 a través de paquetes llamados jdk6-compat y jre6-compat, que instalan estas versiones de Java en /opt/ en lugar de la ubicación normal.

Sin embargo, después de instalar jdk6-compat y jre6-compat, todavía veo que estoy ejecutando OpenJDK 7 cuando ejecuto lo siguiente:

% java -version java version "1.7.0_09" OpenJDK Runtime Environment (IcedTea7 2.3.3) (ArchLinux build 7.u9_2.3.3-1-x86_64) OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode) 

… incluso después de que he configurado JAVA_HOME y agregado /opt/java6/bin a mi PATH en mi .zshrc archivo.

¿Cómo puedo hacer que PyCharm (u otras aplicaciones) usen Oracle Java 6 en lugar de OpenJDK?

Gracias, y disculpas si he publicado en el lugar equivocado.

Otra información que podría ser útil:

  • Usando Gnome 3 como DE

Responda

Si quiero usar una versión diferente de Java, hago dos cosas:

  • Primero, configure JAVA_HOME según corresponda para esa instalación de Java y expórtelo.
  • Luego, actualice mi ruta con `PATH = $ {JAVA_HOME} / bin: $ {PATH}.

Debido a la forma en que PATH es buscado, si agrega al final de la ruta, no se utilizará la nueva versión. Todo lo que se agregue al final de la ruta solo agrega nuevos comandos, no reemplaza los comandos existentes. Anteponer a la variable PATH se usará el comando en el nuevo directorio en lugar de otro comando.

Comandos como java a menudo implican una serie de enlaces simbólicos antes de llegar al programa. El uso de ${JAVA_HOME}/bin omite las direcciones indirectas y proporciona una ruta directa a los diversos comandos relacionados con Java.

EDITAR: si desea ejecutar solo ciertos programas con una versión diferente de Java, puede usar un contenedor como este:

#!/bin/bash # javawrapper - replace Java for a command. export JAVA_HOME=$1; shift PATH=${JAVA_HOME}/bin:$PATH $* 

Luego puede llamar al contenedor con un comando como.

javawrapper /opt/java6 PyCharm 

También puede agregar un alias a su archivo ~/.bashrc como este

alias PyCharm="javawrapper /opt/java6 PyCharm" 

Comentarios

  • Bueno, eso resuelve la mitad del problema; Estaba agregando al final, en lugar del comienzo de $PATH. Pero, ¿cómo ejecuto solo la versión diferente de Java para ciertas aplicaciones?
  • He ' he actualizado mi respuesta. Sin embargo, en un caso como el suyo, rara vez necesito mantener los programas usando la versión predeterminada de Java.

Respuesta

ArchLinux mantiene los diferentes JDK en el directorio / usr / lib / jvm, cambiar el JDK predeterminado es una cuestión de modificar los enlaces simbólicos allí:

# ls -al /usr/lib/jvm lrwxrwxrwx 1 root root 14 May 31 19:58 default -> java-8-openjdk lrwxrwxrwx 1 root root 18 May 31 19:58 default-runtime -> java-8-openjdk/jre drwxr-xr-x 7 root root 4096 May 27 21:45 java-10-openjdk drwxr-xr-x 6 root root 4096 May 31 14:35 java-8-openjdk drwxr-xr-x 7 root root 4096 May 31 19:56 java-9-openjdk 

Arch tiene un script especial para eso:

# archlinux-java set java-10-openjdk 

y obtienes:

# java -version openjdk version "10.0.1" 2018-04-17 OpenJDK Runtime Environment (build 10.0.1+10) OpenJDK 64-Bit Server VM (build 10.0.1+10, mixed mode) 

también puede utilizar las opciones «arreglar» y «estado»:

# archlinux-java fix # archlinux-java status Available Java environments: java-10-openjdk (default) java-8-openjdk java-9-openjdk 

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *