Como substituir o OpenJDK 6 pelo OpenJDK 7?

33

Surpreendentemente (como o OpenJDK 7 foi lançado para disponibilidade geral há cerca de 4 meses), o Ubuntu 11.10 ainda usa o OpenJDK 6 em vez de 7 por padrão. Como faço para corrigir isso melhor? Prefiro remover o OpenJDK 6 completamente e deixar que o OpenJDK 7 seja o default-jdk e o default-jre.

Eu não quero os tarballs oficiais da Oracle, quero os repositórios de deb - a maneira padrão do Ubuntu.

Ivan
fonte
Alguém teria que incorporar isso em um pacote Debian e colocá-lo em um PPA no Launchpad. Se ninguém fez isso ainda, você pode criar um .deb ou instalar o tar.
Martin Ueding
Ainda é o caso com 12.04
Thorbjørn Ravn Andersen
Ano de 2011 - Agora ano 2012 - foi esta resolvido realmente (que um foi considerado ser a resposta lolSe não? i gonna write a nice wiki on thisNa minha pergunta / resposta.
Será melhor atualizar seu sistema para LTS.
Ketan Patel

Respostas:

28

O problema é que o default-jrepacote depende do OpenJDK 6 e a maioria dos outros pacotes tem suas dependências definidas como default-jre | openjdk-6-jre | sun-java6-jre- portanto, até que o OpenJDK 7 seja oficialmente suportado e seja usado como a versão padrão, ou até que todos os pacotes dependentes de Java atualizem suas dependências, você precisa manter o OpenJDK 6 por perto e definir o OpenJDK 7 como padrão usando update-java-alternatives. Exemplo para sistema de 64 bits:

$ update-java-alternatives -l
java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64
$ sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

No sistema de 32 bits, o nome do diretório será diferente. Você pode encontrar o nome correto usando o -lcomutador. O segundo comando pode cuspir muitos erros; use --jreswitch ou apenas ignore erros - o script altera o que pode e simplesmente ignora o resto.

Pode-se teoricamente editar o default-jrepacote para depender do OpenJDK 7, mas esteja avisado de que isso pode causar mais danos do que benefícios.

jnv
fonte
2
Para que isso funcionasse com precisão, eu tinha que garantir que, para cada pacote openjdk-6 ou icedtea-6, houvesse um pacote openjdk-7 ou icetea-7 correspondente, caso contrário, update-java-alternative falhará ao fazer a troca.
Blair Zajac
2
Depois de instalar o icedtea-7-plugin ( $ sudo apt-get install icedtea-7-plugin), ele funcionou bem no Ubuntu 12.04. Obrigado.
David
10

Para isso, você deve ter as duas versões do jdk instaladas no seu sistema. você pode usar o apt-get para baixar os dois.

Depois dessa tentativa,

$ sudo update-alternatives --config java

e selecione o jdk que você deseja usar.

O Openjdk às vezes é desfavorável para algumas aplicações.

Você também deve tentar oracle-java ou sun-java.

O link abaixo é muito útil para esse fim:

http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html

shivshnkr
fonte
3

O OpenJDK 7 está nos repositórios normais do ubuntu na 11.10, se você procurar por openjdk-7-jre e openjdk-7-jdk e instalá-los usando o apt-get / synaptic / software center, eles devem substituir o openjdk-6, caso contrário você pode remover os pacotes openjdk-6- * primeiro usando apt-get purge openjdk-6-*

químico
fonte
11
Os pacotes openjdk-7- * parecem ter sido instalados lado a lado com o openjdk-6- . E se eu tentar remover o openjdk-6- , há muitos pacotes a serem removidos como dependentes (apesar de eu saber que alguns desses aplicativos funcionam perfeitamente com o Java 7).
1313 Ivan Ivan
aparentemente default-jreainda aponta para Java 6.
Thorbjørn Ravn Andersen
2

O repo pode ser encontrado aqui: https://launchpad.net/~openjdk/+archive/ppa

ou:

sudo apt-add-repository ppa:openjdk/ppa
sudo apt-get update
sudo apt-get upgrade

assumindo que você tenha o OpenJDK instalado

LasseValentini
fonte
11
Parece que não foi feito para a 11.10.
Ivan