49 votes

Comment correctement supprimer OpenJDK/OpenJRE et définir SunJDK/SunJRE comme valeur par défaut

Ubuntu semble préférer OpenJDK/JRE très fortement par rapport à Sun JDK/JRE. Même après avoir installé Sun JRE, JDK et plugin et avoir passé un certain temps à éliminer les paquets liés à OpenJDK, apt-get les a réinstallés avec certains paquets en tant que dépendance. Ce comportement peut-il être corrigé en faveur des packages Sun Java? Je voudrais avoir une seule pile Java installée (oui, c'est un peu de TOC, mais j'aime avoir des systèmes propres) et je veux que ce soit Sun Java.

Mise à jour: comme le note Marcos Roriz, le problème semble être dans default-jre (sur lequel les paquets dépendants de Java ont tendance à dépendre) pointant vers OpenJDK, donc la question semble porter sur la manière de pirater default-jre/default-jdk pour le faire pointer vers Sun Java.

35voto

Bob Points 940

Installation de Sun Java sur les anciennes versions d'Ubuntu (9.10 et inférieures)

J'ai eu le même problème une fois il y a environ trois ans avec Ubuntu 8.04 je crois. Il y avait un problème étrange lors de l'utilisation d'openjre et le problème a été résolu en utilisant la version sun jre. Voici les étapes dans le terminal qui s'appliquent aux versions antérieures à 10.04, car à partir de 10.04 sun java a été abandonné et remplacé par openjre :

sudo apt-get remove openjdk-6-jre default-jre default-jre-headless

sudo apt-get install sun-java6-jre sun-java6-bin sun-java6-plugin sun-java6-fonts

(Tout ce qui concerne Sun java. Juste pour être sûr)

Après cela, si vous avez supprimé openjdk alors vous n'auriez que sun java. Si vous ne l'avez pas supprimé alors vous avez les deux. Pour passer de l'un à l'autre, faites ceci :

sudo update-java-alternatives -l - Cela vous montrera la liste des moteurs Java que vous pouvez utiliser.

Le nom de l'alternative Java est celui de gauche donc par exemple openjdk apparaîtrait comme ceci :

java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk

Et vous définiriez le système sur openjdk comme ceci :

sudo update-java-alternatives -s java-6-openjdk

Si vous souhaitez utiliser Sun alors vous feriez ceci (après l'installation des paquets sun) :

sudo update-java-alternatives -s java-6-sun

Si vous voulez utiliser la version Java 7, changez simplement le numéro 6 mentionné ci-dessus par 7. Par exemple, si je voulais installer la version 7 de openjre, je ferais :

sudo apt-get install openjdk-7-jre default-jre default-jre-headless

Installation de Sun Java sur les nouvelles versions d'Ubuntu (10.04 et supérieures)

Ouvrez le terminal et tapez ce qui suit :

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

Cela devrait installer la version Sun Java sur votre système. Pour passer à cette version, faites simplement ce qui suit si vous avez d'autres alternatives Java :

sudo update-java-alternatives -s java-7-oracle

Si vous souhaitez que l'installation soit automatique, tapez ce qui suit :

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections

ensuite, faites simplement ce qui suit pour définir les variables d'environnement par défaut :

sudo apt-get install oracle-java7-set-default

Notez que le PPA inclut les versions 6, 7 et 8. Vous pouvez donc installer l'une d'entre elles en changeant simplement le numéro dans la ligne d'installation, par exemple :

sudo apt-get install oracle-java8-installer

Installerait Java 8. Après avoir installé la version Java que vous souhaitez utiliser et défini la version par défaut avec la commande update-java-alternatives, vous pouvez vérifier quelle version vous utilisez en tapant ce qui suit :

java -version

Cela vous montrera la version par défaut que vous utilisez à ce moment-là.

J'aimerais également mentionner qu'OpenJRE/JDK a parcouru un long chemin depuis 2 ou 3 ans lorsque de nombreux problèmes ont été résolus en passant à Sun Java.

11voto

Stig Brautaset Points 1746

Je pense que le problème est que certains packages Java dépendent de default-jre qui pointe vers openjdk-jre. Je ne pense pas qu'il y ait un moyen facile de désinstaller définitivement openjdk. Le problème est que vous risquez probablement de tomber sur openjdk à nouveau lorsque vous installerez un package/programme Java.

Mais si vous êtes prêt à avoir les deux, il est facile de définir les programmes d'exécution Java (java, javah, javap, etc.) vers la version de Sun. Faites-le :

sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts

ou si vous êtes un développeur Java (installez le sdk et les srcs) :

sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-source

Et définissez-le comme les programmes par défaut avec :

sudo update-java-alternatives -s java-6-sun

6voto

AdamB Points 1290

Le fichier .jdk1.6.0_23.jinfo doit être une liste des programmes fournis et de leurs chemins. Il y a un en-tête descriptif suivi d'une ligne vide. Ensuite, une liste des programmes dans un format à trois champs : type d'entrée (jre/jkd/plugin) ; nom du programme ; et chemin. Vous devriez avoir quelques fichiers jinfo que vous pouvez utiliser pour voir à quoi le contenu devrait ressembler. Cela est probablement utilisé par le mécanisme des alternatives pour déterminer quels liens créer. L'en-tête de mon paquet Sun est.

name=java-6-sun-1.6.0.22
alias=java-6-sun
priority=63
section=non-free

jre ControlPanel /usr/lib/jvm/java-6-sun/jre/bin/ControlPanel
jre java /usr/lib/jvm/java-6-sun/jre/bin/java
jre java\_vm /usr/lib/jvm/java-6-sun/jre/bin/java\_vm

Si vous souhaitez remplacer les commandes Java par défaut sans utiliser le mécanisme des alternatives, placez votre chemin Java avant /usr/bin dans votre chemin.

Lors d'une installation manuelle, j'installe Java dans /opt. Pour votre installation, j'aurais installé dans /opt/jdk1.6.0_23. Ensuite, je mets le chemin $JAVA_HOME/bin au début de ma variable PATH.

EDIT : Voici tout le fichier Sun. Notez que .java-6-sun.jinfo est un lien symbolique vers .java-6-sun-1.6.0.22.jinfo.

name=java-6-sun-1.6.0.22
alias=java-6-sun
priority=63
section=non-free

jre ControlPanel /usr/lib/jvm/java-6-sun/jre/bin/ControlPanel
jre java /usr/lib/jvm/java-6-sun/jre/bin/java
jre java\_vm /usr/lib/jvm/java-6-sun/jre/bin/java\_vm
jre javaws /usr/lib/jvm/java-6-sun/jre/bin/javaws
jre jcontrol /usr/lib/jvm/java-6-sun/jre/bin/jcontrol
jre keytool /usr/lib/jvm/java-6-sun/jre/bin/keytool
jre pack200 /usr/lib/jvm/java-6-sun/jre/bin/pack200
jre policytool /usr/lib/jvm/java-6-sun/jre/bin/policytool
jre rmid /usr/lib/jvm/java-6-sun/jre/bin/rmid
jre rmiregistry /usr/lib/jvm/java-6-sun/jre/bin/rmiregistry
jre unpack200 /usr/lib/jvm/java-6-sun/jre/bin/unpack200
jre orbd /usr/lib/jvm/java-6-sun/jre/bin/orbd
jre servertool /usr/lib/jvm/java-6-sun/jre/bin/servertool
jre tnameserv /usr/lib/jvm/java-6-sun/jre/bin/tnameserv
jre jexec /usr/lib/jvm/java-6-sun/jre/lib/jexec
jdk HtmlConverter /usr/lib/jvm/java-6-sun/bin/HtmlConverter
jdk appletviewer /usr/lib/jvm/java-6-sun/bin/appletviewer
jdk apt /usr/lib/jvm/java-6-sun/bin/apt
jdk extcheck /usr/lib/jvm/java-6-sun/bin/extcheck
jdk idlj /usr/lib/jvm/java-6-sun/bin/idlj
jdk jar /usr/lib/jvm/java-6-sun/bin/jar
jdk jarsigner /usr/lib/jvm/java-6-sun/bin/jarsigner
jdk javac /usr/lib/jvm/java-6-sun/bin/javac
jdk javadoc /usr/lib/jvm/java-6-sun/bin/javadoc
jdk javah /usr/lib/jvm/java-6-sun/bin/javah
jdk javap /usr/lib/jvm/java-6-sun/bin/javap
jdk jconsole /usr/lib/jvm/java-6-sun/bin/jconsole
jdk jdb /usr/lib/jvm/java-6-sun/bin/jdb
jdk jhat /usr/lib/jvm/java-6-sun/bin/jhat
jdk jinfo /usr/lib/jvm/java-6-sun/bin/jinfo
jdk jmap /usr/lib/jvm/java-6-sun/bin/jmap
jdk jps /usr/lib/jvm/java-6-sun/bin/jps
jdk jrunscript /usr/lib/jvm/java-6-sun/bin/jrunscript
jdk jsadebugd /usr/lib/jvm/java-6-sun/bin/jsadebugd
jdk jstack /usr/lib/jvm/java-6-sun/bin/jstack
jdk jstat /usr/lib/jvm/java-6-sun/bin/jstat
jdk jstatd /usr/lib/jvm/java-6-sun/bin/jstatd
jdk native2ascii /usr/lib/jvm/java-6-sun/bin/native2ascii
jdk rmic /usr/lib/jvm/java-6-sun/bin/rmic
jdk schemagen /usr/lib/jvm/java-6-sun/bin/schemagen
jdk serialver /usr/lib/jvm/java-6-sun/bin/serialver
jdk wsgen /usr/lib/jvm/java-6-sun/bin/wsgen
jdk wsimport /usr/lib/jvm/java-6-sun/bin/wsimport
jdk xjc /usr/lib/jvm/java-6-sun/bin/xjc
plugin xulrunner-1.9-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so
plugin mozilla-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so

6voto

dan2bit Points 1

Supprimer openjdk et icedtea:

apt-get purge openjdk-\* icedtea-\* icedtea6-\*

Ajouter ce qui suit à /etc/apt/sources.list

deb http://ppa.launchpad.net/webupd8team/java/ubuntu VOTRE_VERSION_UBUNTU_ICI main

Installer Sun/Oracle JRE ou JDK:

apt-get install oracle-jdk7-installer
apt-get install oracle-java7-installer

4voto

Igor B. Points 365

J'ai ajouté cette ligne au fichier /etc/environnement : JAVA_HOME="/usr/lib/jvm/jdk1.6.0_23" et j'ai ajouté JAVA_HOME/bin au variable PATH, MAIS le système d'exploitation ne reconnaît toujours pas la commande java, dit qu'il n'est pas installé et me propose gcj et openjdk.

L'as-tu vérifié?

echo $JAVA_HOME 
echo $PATH

Si tu n'en as pas besoin : désinstalle openjdk et gcj dans synaptic ou avec apt-get.

apt-get remove gcj 
apt-get remove openjdk

Je bannirais ensuite java des alternatives, et ferait principalement ce que BillThor a suggéré, pourquoi je lui ai donné un vote positif.

which javac
which java

devrait indiquer où vous avez installé java et où il se trouve dans le PATH.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X