Comment remplacer OpenJDK 6 par OpenJDK 7?

33

De manière surprenante (OpenJDK 7 étant disponible depuis environ 4 mois), Ubuntu 11.10 utilise toujours OpenJDK 6 au lieu de 7 par défaut. Comment puis-je résoudre ce problème? Je préférerais supprimer complètement OpenJDK 6 et laisser OpenJDK 7 être default-jdk et default-jre.

Je ne veux pas les archives officielles d'Oracle, je veux des deb repos - la manière standard d'Ubuntu.

Ivan
la source
Quelqu'un devrait intégrer cela dans un paquet Debian et le mettre dans un PPA sur Launchpad. Si personne ne l'a encore fait, vous pouvez créer un fichier .deb ou installer le fichier tar.
Martin Ueding
Toujours le cas avec 12.04
Thorbjørn Ravn Andersen
Année 2011 - Maintenant Année 2012 - cette question a-t-elle vraiment été résolue (laquelle était considérée comme la solution lol? Sinon, i gonna write a nice wiki on thisdans ma question / réponse.
Il sera préférable de mettre à niveau votre système vers LTS.
Ketan Patel

Réponses:

28

Le problème est que le default-jrepaquet dépend d'OpenJDK 6 et que la plupart des autres paquets ont leurs dépendances définies comme suit default-jre | openjdk-6-jre | sun-java6-jre: jusqu'à ce que OpenJDK 7 soit officiellement pris en charge et soit utilisé comme version par défaut devez garder OpenJDK 6 et définir OpenJDK 7 par défaut avec update-java-alternatives. Exemple pour un système 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

Sur les systèmes 32 bits, le nom du répertoire sera différent, vous pouvez trouver le bon nom à l'aide du -lcommutateur. La deuxième commande peut générer beaucoup d’erreurs; soit utilisez --jreswitch, soit ignorez simplement les erreurs - le script change ce qu’il peut et ignore simplement le reste.

On pourrait théoriquement éditer le default-jrepaquet pour qu'il repose sur OpenJDK 7, mais sachez que cela peut causer plus de tort que de mal.

jnv
la source
2
Pour que cela fonctionne avec précision, je devais m'assurer que pour chaque paquet openjdk-6 ou icedtea-6, il y avait un paquet correspondant openjdk-7 ou icetea-7, sans quoi update-java-alternatives échouerait.
Blair Zajac
2
Après avoir installé icedtea-7-plugin ( $ sudo apt-get install icedtea-7-plugin), cela a bien fonctionné sous Ubuntu 12.04. Merci.
David
10

Pour cela, vous devez avoir les deux versions de jdk installées sur votre système. vous pouvez utiliser apt-get pour télécharger les deux.

Après cela, essayez

$ sudo update-alternatives --config java

et sélectionnez le jdk que vous souhaitez utiliser.

Openjdk est parfois défavorable pour certaines applications.

Vous devriez également essayer oracle-java ou sun-java.

Le lien ci-dessous est très utile à cet effet:

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

Shivshnkr
la source
3

OpenJDK 7 est dans les pensions ubuntu normales dans 11.10. Si vous recherchez openjdk-7-jre et openjdk-7-jdk et que vous les installez à l'aide d'apt-get / synaptic / software center, ils doivent remplacer openjdk-6, s'ils ne le font pas. vous pouvez d’abord supprimer les paquets openjdk-6- * en utilisant apt-get purge openjdk-6-*

Chemicaloliver
la source
1
Les paquets openjdk-7- * semblent être conçus pour être installés côte à côte avec openjdk-6- . Et si j'essaie de supprimer openjdk-6- , il y a des tonnes de paquets à supprimer comme dépendants (malgré le fait que je sache que certaines de ces applications fonctionnent parfaitement avec Java 7).
Ivan
semble default-jretoujours indiquer Java 6.
Thorbjørn Ravn Andersen
2

Le référentiel peut être trouvé ici: https://launchpad.net/~openjdk/+archive/ppa

ou:

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

en supposant que vous avez installé OpenJDK

LasseValentini
la source
1
Il semble que ce n'est pas prévu pour 11.10.
Ivan