Use determinada versão do JRE / JDK para certos programas

7

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

No entanto, depois de 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 definir JAVA_HOME e adicionar /opt/java6/bin ao meu PATH no meu arquivo .zshrc .

Como posso obter o PyCharm (ou outros aplicativos) para usar o Oracle Java 6 em vez do OpenJDK?

Obrigado e peço desculpas se postei no lugar errado.

Outras informações que podem ser úteis:

  • Usando o Gnome 3 como DE
por NT3RP 17.11.2012 / 18:51

2 respostas

4

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

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

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

Comandos como java geralmente envolvem vários links simbólicos antes de você chegar ao programa. Usar ${JAVA_HOME}/bin ignora as indirecções e fornece um caminho direto para os vários comandos relacionados com Java.

EDIT: Se você quiser executar apenas alguns programas com uma versão diferente do Java, você pode 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 arquivo ~/.bashrc como este

alias PyCharm='javawrapper /opt/java6 PyCharm'
    
por 17.11.2012 / 19:38
2

O ArchLinux mantém os diferentes JDKs no diretório / usr / lib / jvm, mudar o JDK padrão é uma questão de modificar os links simbólicos:

# 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 tem um script especial para isso:

# archlinux-java set java-10-openjdk

e você recebe:

# 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 'fix' e 'status':

# archlinux-java fix
# archlinux-java status
Available Java environments:
  java-10-openjdk (default)
  java-8-openjdk
  java-9-openjdk
    
por 31.05.2018 / 20:12