Use certas versões do JRE / JDK para certos programas

Eu uso o ArchLinux e um IDE chamado PyCharm. Em sua página de download , ele recomenda o uso de Java 6 em vez de OpenJDK. O ArchLinux tem um pacote OpenJDK (jdk7-openjdk) que instalei, instalei e pelo que li no Arch Wiki em Java , deve ser possível instalar o Oracle Java 6 junto com o OpenJDK 7 por meio de pacotes chamados jdk6-compat e jre6-compat, que instalam essas versões do Java em /opt/ em vez do local normal.

No entanto, após instalar jdk6-compat e jre6-compat, ainda vejo que estou executando o OpenJDK 7 quando executo o seguinte:

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

… mesmo depois de eu defini JAVA_HOME e adicionou /opt/java6/bin ao meu PATH no meu .zshrc arquivo.

Como posso fazer com que o PyCharm (ou outros aplicativos) use o Oracle Java 6 em vez do OpenJDK?

Obrigado e desculpas se postei no lugar errado.

Outras informações que podem ser úteis:

  • Usando o Gnome 3 como DE

Resposta

Se eu quiser usar uma versão diferente do Java, faço duas coisas:

  • Primeiro, defina JAVA_HOME como apropriado para a instalação do Java e exporte-o.
  • Em seguida, atualize meu caminho com `PATH = $ {JAVA_HOME} / bin: $ {PATH}.

Devido à forma como PATH é pesquisado, se você adicionar ao final do caminho, a nova versão não será usada. Qualquer coisa adicionada ao final do caminho apenas adiciona novos comandos, não substitui os comandos existentes. Preceder à variável PATH usará o comando no novo diretório em preferência a outro comando.

Comandos como java muitas vezes envolvem vários links simbólicos antes de você chegar ao programa. O uso de ${JAVA_HOME}/bin ignora quaisquer indireções e fornece um caminho direto para os vários comandos relacionados ao Java.

EDITAR: Se você deseja executar apenas alguns programas com uma versão diferente de Java, você poderia usar um wrapper como este:

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

Você pode então chamar o wrapper com um comando como.

javawrapper /opt/java6 PyCharm 

Você também pode adicionar um alias ao seu ~/.bashrc arquivo como este

alias PyCharm="javawrapper /opt/java6 PyCharm" 

Comentários

  • Bem, isso resolve metade do problema; Eu estava anexando ao final, em vez do início de $PATH. Mas como executo apenas versões diferentes do Java para determinados aplicativos?
  • Eu ' atualizei minha resposta. No entanto, em um caso como o seu, raramente preciso manter os programas usando a versão Java padrão.

Resposta

ArchLinux mantém os diferentes JDKs no diretório / usr / lib / jvm, alterar o JDK padrão é uma questão de modificar os links simbólicos 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 

O Arch possui um script especial para isso:

# archlinux-java set java-10-openjdk 

e você obtém:

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

você também pode usar as opções “corrigir” e “status”:

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

Comentários

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *