Usa una certa versione di JRE / JDK per certi programmi

Uso ArchLinux e un IDE chiamato PyCharm. Nella sua pagina di download , consiglia di utilizzare Java 6 invece di OpenJDK. ArchLinux ha un pacchetto OpenJDK (jdk7-openjdk) che ho installato, installato e da quello che avevo letto in Arch Wiki su Java , dovrebbe essere possibile installare Oracle Java 6 insieme a OpenJDK 7 tramite pacchetti denominati jdk6-compat e jre6-compat, che installano queste versioni di Java in /opt/ invece della posizione normale.

Tuttavia, dopo linstallazione di jdk6-compat e jre6-compat, vedo ancora che sto eseguendo OpenJDK 7 quando eseguo quanto segue:

% 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) 

… anche dopo ho impostato JAVA_HOME e aggiunto /opt/java6/bin al mio PATH nel mio .zshrc file.

Come posso fare in modo che PyCharm (o altre applicazioni) utilizzi Oracle Java 6 invece di OpenJDK?

Grazie e mi scuso se” ho pubblicato nel posto sbagliato.

Altre informazioni che potrebbero essere utili:

  • Utilizzo di Gnome 3 come DE

Risposta

Se desidero utilizzare una versione diversa di Java faccio due cose:

  • Innanzitutto, imposta JAVA_HOME come appropriato per linstallazione di Java ed esportalo.
  • Quindi, aggiorna il mio percorso con `PATH = $ {JAVA_HOME} / bin: $ {PATH}.

A causa del modo in cui PATH è cercato, se aggiungi alla fine del percorso, la nuova versione non verrà usata. Qualunque cosa aggiunta alla fine del percorso aggiunge solo nuovi comandi, non sostituisce i comandi esistenti. Anteponendo la variabile PATH verrà utilizzato il comando nella nuova directory al posto di un altro comando.

Comandi come java spesso coinvolgono una serie di collegamenti simbolici prima di arrivare al programma. Lutilizzo di ${JAVA_HOME}/bin ignora qualsiasi indiretto e fornisce un percorso diretto ai vari comandi correlati a Java.

MODIFICA: se desideri eseguire solo determinati programmi con una versione diversa di Java potresti usare un wrapper come questo:

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

Puoi quindi chiamare il wrapper con un comando come.

javawrapper /opt/java6 PyCharm 

Puoi anche aggiungere un alias al tuo file ~/.bashrc in questo modo

alias PyCharm="javawrapper /opt/java6 PyCharm" 

Commenti

  • Bene, questo risolve metà del problema; Stavo aggiungendo alla fine, anziché allinizio di $PATH. Ma come faccio a eseguire la versione diversa di Java solo per determinate applicazioni?
  • ' ho aggiornato la mia risposta. Tuttavia, in un caso come il tuo, raramente ho bisogno di mantenere i programmi che utilizzano la versione Java predefinita.

Risposta

ArchLinux mantiene i diversi JDK nella directory / usr / lib / jvm, cambiare il JDK predefinito è questione di modificare i collegamenti simbolici lì:

# 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 ha uno script speciale per questo:

# archlinux-java set java-10-openjdk 

e ottieni:

# 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) 

puoi anche utilizzare le opzioni “fix” e “status”:

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

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *