Alterna entre várias versões do java

24

Ao instalar o Android Studio no Ubuntu 14.04, recebo a mensagem de que minha versão do Java ( javac 1.7.0_79 ) está causando problemas. Eu encontrei uma solução de como instalar uma nova versão do Oracle em Java:

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

No entanto, tenho medo de que isso possa substituir minha versão open-jdk existente do Java. Como não sei qual dos meus programas depende do Java, temo que isso possa travar esses outros programas.

Existe uma maneira de garantir que apt-get não substitua meu Java anterior? Eu gostaria basicamente de ter instalado ambos e ser capaz de alternar entre eles manualmente, dependendo da versão que eu preciso.

    
por mcExchange 01.03.2016 / 11:05

4 respostas

25

O Apt-get não sobrescreve as versões java existentes.

Para alternar entre as versões Java instalado, use o comando update-java-alternatives .

Listar todas as versões do java:

update-java-alternatives --list

Defina a versão java como padrão (precisa de permissões de root):

sudo update-java-alternatives --set /path/to/java/version

... onde /path/to/java/version é um dos listados pelo comando anterior (por exemplo, /usr/lib/jvm/java-7-openjdk-amd64 ).

Informação adicional:

update-java-alternatives é uma ferramenta de conveniência que usa o sistema de alternativas do Debian ( update-alternatives ) para definir vários links para o versão do java especificada (por exemplo, java , javac , ...).

    
por danzel 01.03.2016 / 12:42
9

Use

sudo update-alternatives --config java

que lista todas as versões instaladas com o ativo atual marcado e fornece a caixa de diálogo para alternar:

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

Selection    Path...
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java...
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/java...
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java...
  3            /usr/lib/jvm/java-9-oracle/bin/java...

Press <enter> to keep...[*], or type selection number: 

Use

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

para definir $JAVA_HOME da versão ativa atual

    
por muet 04.11.2016 / 02:13
3

Com base na resposta do @muet, descobri que isso funciona perfeitamente:

Adicione isso a ~/.bashrc :

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

Adicionar aos aliases:

alias useJava8='yes | sudo apt-get install oracle-java8-set-default && source ~/.bashrc'
alias useJava7='yes | sudo apt-get install oracle-java7-set-default && source ~/.bashrc'

Depois, você pode alternar no mesmo shell usando apenas: useJava7 ou useJava8

    
por brianjohnsen 24.01.2017 / 10:14
0

Configurando o Java

Você pode configurar qual versão é a padrão para uso na linha de comando usando update-alternatives , que gerencia quais links simbólicos são usados para diferentes comandos.

sudo update-alternatives --config java

A saída será parecida com a seguinte.

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

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1         manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          2         manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  4            /usr/lib/jvm/java-8-oracle/jre/bin/java          3         manual mode
  5            /usr/lib/jvm/java-9-oracle/bin/java              4         manual mode

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

Agora você pode escolher o número a ser usado como padrão. Isso também pode ser feito para outros comandos Java, como o compilador ( javac ), o gerador de documentação ( javadoc ), a ferramenta de assinatura JAR ( jarsigner ) e muito mais. Você pode usar o seguinte comando, preenchendo o comando que deseja personalizar.

sudo update-alternatives --config command

Definindo a variável de ambiente JAVA_HOME

Muitos programas, como servidores Java, usam a variável de ambiente JAVA_HOME para determinar o local de instalação do Java.

Copie o caminho da sua instalação preferida e abra o / etc / environment usando o Sublime Text ou seu editor de texto favorito.

sudo subl /etc/environment

No final desse arquivo, adicione a seguinte linha, certificando-se de substituir o caminho realçado pelo seu próprio caminho copiado.

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

Salve e saia do arquivo e recarregue-o: source /etc/environment .
Agora você pode testar se a variável de ambiente foi definida executando o seguinte comando: echo $JAVA_HOME . Isso retornará o caminho que você acabou de definir.

    
por naXa 15.05.2018 / 00:15