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

49

Ubuntu semble préférer OpenJDK / JRE à Sun JDK / JRE. Même après avoir installé Sun JRE, JDK et le plugin et passé du temps à extraire 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? J'aimerais disposer d'une seule et unique pile Java (oui, c'est un peu d' OCD , mais j'aime bien que mes systèmes soient propres) et je souhaite qu'il s'agisse de Sun Java.

Mise à jour: comme le note Marcos Roriz, le problème semble être dans default-jre (sur lequel les paquetages dépendants de Java s'appuient pour dépendre) pointant sur OpenJDK, la question semble donc être de savoir comment pirater default-jre / default-jdk à Sun Java.

Ivan
la source
s'il vous plaît tout le monde mettre à jour la réponse avec Oracle jdk ..
LoveToCode

Réponses:

35

Installation de Sun Java sur d’anciennes versions d’Ubuntu (versions 9.10 et antérieures)

J'ai eu le même problème il y a environ trois ans avec Ubuntu 8.04, je pense. 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 du terminal qui s'appliquent aux versions inférieures à 10.04, car à partir de 10,04, sun java a été supprimé 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 supprimiez openjdk, vous n’auriez alors que le java du soleil. Si vous ne l'avez pas retiré, vous en avez les deux. Pour passer de l'un à l'autre, procédez comme suit:

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 situé à gauche. Par exemple, openjdk devrait ressembler à 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, procédez comme suit (après l'installation des packages Sun):

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

Si vous souhaitez utiliser la version java 7, modifiez simplement le numéro 6 mentionné ci-dessus pour 7. Par exemple, si je voulais installer la version 7 openjre, je voudrais:

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 plus)

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 de Sun Java sur votre système. Pour le modifier, procédez comme 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, procédez comme 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 n’importe laquelle d’entre elles en modifiant simplement le numéro dans la ligne d’installation, par exemple:

sudo apt-get install oracle-java8-installer

Installez Java 8. Après avoir installé la version Java que vous souhaitez utiliser et défini la version par défaut à l'aide de la update-java-alternativescommande, vous pouvez vérifier quelle version vous utilisez en tapant ce qui suit:

java -version

Il vous montrera la version par défaut que vous utilisez à ce moment.

Je voudrais également mentionner qu'OpenJRE / JDK a parcouru un long chemin depuis 2 ou 3 ans, alors que de nombreux problèmes avaient été résolus en passant à Sun Java.

Luis Alvarado
la source
11

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

Mais si vous êtes prêt à avoir les deux, est-il facile de définir les programmes d'exécution Java (java, javah, javap, etc.) sur la mise en œuvre de sun. Fais le:

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

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

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

Et définissez-le comme programme par défaut avec:

sudo update-java-alternatives -s java-6-sun
Marcos Roriz Junior
la source
1
Oui, je pense qu'il s'agit de default-jre. Non, je ne veux vraiment pas avoir à la fois les JDK Sun et Open - c’est la question qui se pose - d’avoir un et un seul et qu’il s’agisse du JDK Sun. Existe-t-il un moyen de pirater default-jre pour pointer vers Sun JRE?
Ivan
Oui, je vais essayer de reconstruire le default-jrepaquet pour qu'il pointe vers soleil-Java ce soir. En ce moment je suis au travail.
Marcos Roriz Junior
6

Le .jdk1.6.0_23.jinfofichier 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. Ceci est probablement utilisé par le mécanisme des alternatives pour déterminer les liens à créer. La tête de mon paquet Sun est.

nom = java-6-sun-1.6.0.22
alias = java-6-sun
priorité = 63
section = non-libre

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 devant / 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/binau début de ma PATHvariable.

EDIT: Il s’agit de l’ensemble du fichier Sun. La note .java-6-sun.jinfoest un lien symbolique vers .java-6-sun-1.6.0.22.jinfo.

nom = java-6-sun-1.6.0.22
alias = java-6-sun
priorité = 63
section = non-libre

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 convertisseur html / usr / lib / jvm / java-6-sun / bin / convertisseur html
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
BillThor
la source
Je n'ai pas de java installé, donc je n'ai rien associé à cela, rien n'est installé, aucun fichier .jinfo, etc. J'ai créé le dossier usr / lib / jvm parce que j'ai lu que c'est là qu'il est installé par défaut, et Je vais continuer comme ça. C'est pourquoi j'aimerais voir le contenu complet du fichier .jinfo pour le JDK du Sun.
jurchiks
J'ai ajouté le fichier .jinfo en plein soleil.
BillThor
6

Supprimer openjdk et icedtea:

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

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

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

installer Sun / Oracle JRE ou JDK:

apt-get install oracle-jdk7-installer
apt-get install oracle-java7-installer 
Fabian Zeindl
la source
2
Et après cela, il ne vous reste plus du tout de Java ... La question concerne en fait le remplacement de l’un par l’autre, et non la suppression de OpenJDK de votre système. Ajoutez un peu plus d’informations à votre réponse, vous ne pouvez pas répondre à la question en suivant ces étapes.
Bruno Pereira
4

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

Avez-vous vérifié?

echo $JAVA_HOME 
echo $PATH

Si vous n'en avez pas besoin: Désinstallez openjdk et gcj dans synaptic ou avec apt-get.

apt-get remove gcj 
apt-get remove openjdk

À ce moment-là, je bannirais java des alternatives et ferais surtout ce que BillThor avait 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 chemin.

Utilisateur inconnu
la source
Gcj ou openjdk ne sont pas installés ... J'ai juste essayé les whichcommandes et rien ne s'affiche . Découvert que j'avais oublié le symbole $ avant la variable JAVA_HOME dans PATH, je vais redémarrer maintenant et voir comment ça se passe.
jurchiks
Redémarrez le PC, mais la whichcommande n'affiche toujours rien. Les variables JAVA_HOME et PATH sont correctes: echo $ JAVA_HOME /usr/lib/jvm/jdk1.6.0_23 echo $ PATH $ JAVA_HOME / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games Où pourrait être le problème? Edit: DIEU DE DIEU IT, pourquoi n'y a-t-il pas de sauts de ligne dans les commentaires ??
jurchiks
a) le redémarrage du PC ne devrait pas être nécessaire. Rouvrir le shell devrait suffire, ou généralement se reconnecter en tant qu'utilisateur. b) Regardez dans l'aide pour la mise en forme dans les commentaires. Je vois, echo $PATH $JAVA_HOME/bin:/usr/local/sbin...mais dans le résultat, $ JAVA_HOME doit être évalué - il y a quelque chose qui ne va pas, ou votre rapport est erroné. c) Linebreaks: ils ne sont pas là, de sorte que nous appuyons constamment trop tôt sur ENTRÉE, puis le tic-tac d'horloge, parce que le montage n'est autorisé que pendant quelques minutes - je suis constamment dans ce piège. Je déteste ça! :)
utilisateur inconnu le
La variable JAVA_HOME se trouve dans le même fichier (/ etc / environment), juste à la première ligne. Peut-être que cela devrait être ailleurs? Il le reconnaît quand je tape echo $JAVA_HOMEbien ...
jurchiks
Ma question est: Est-ce que l' echo $PATHimpression $JAVA_HOME...ou est - elle imprime la valeur JAVA_HOME, à savoir: /usr/lib/jvm/jdk1.6.0_23?
utilisateur inconnu
3
  1. Ouvrez Système-> Administration-> Synaptic Package Manager, puis supprimez complètement OpenJDK.
  2. Tester la version de Java en tapant java -versiondans un shell (Sun java uniquement)
  3. Type sudo update-java-alternatives -l
  4. vous avez terminé. Maintenant, seul Sun Java est installé et il est configuré comme jdk par défaut.

et cela ne fonctionne que si deux jdk sont installés et que vous voulez définir sun-java comme environnement par défaut

Shohrat
la source
2

Sous Ubuntu 10.10, il semble que vous deviez marquer pour la suppression libaccess-bridge-java en premier dans Synaptic, puis marquer openjdk-6-jre-headless.

Je me suis retrouvé avec une liste à supprimer:

certificats ca-java, icedtea-6-cacao, libaccess-bridge-java, pont libaccess-java-jni, openjdk-6-jre, openjdk-6-jre-sans tete, openjdk-6-jre-lib.

Cela a fonctionné, mais il a laissé un répertoire /etc/java-6-openjdkavec des fichiers et des sous-répertoires assortis, que j’ai isolé dans un nouveau répertoire. Il n'y a eu aucun effet inhabituel, donc ce n'est vraisemblablement qu'un reste.

Cela m'a laissé avec le Java que j'avais téléchargé directement depuis le site Web Java. Cependant, malgré l’avoir défini comme valeur par défaut et la création du lien vers le répertoire des plugins Firefox, cela ne fonctionnait plus. L'installation de sun-java6-jre et de ses packages associés gsfonts-x11, odbcinst, odbcinst1debian2, sun-java6-bin et unixodbc, via Synaptic, a vu le plugin Java recommencer à fonctionner. Suppression du lien dans le répertoire plugins et son remplacement par le fichier libnpjp2.so ne fonctionnait pas. L'utilisation d'un lien vers les fichiers libjavaplugin_oji.so dans les répertoires ns7 ou ns7-gcc29 de Java installés via Synaptic ne fonctionnait pas non plus. Cela me suggère que pour obtenir le dernier plugin Java dans Firefox, il est possible de suivre les instructions du site Web Java, et que le système Java intégré de la version la plus récente est nécessaire pour exécuter le fichier Java téléchargé. qui repose ensuite pour son fonctionnement sur les fichiers qui l’entourent une fois le plugin activé. Bien qu'il soit nécessaire de bien comprendre le code comprenant Java et Linux pour vraiment résoudre ses mystères, ces expériences sont peut-être utiles pour déterminer les raisons pour lesquelles deux Java peuvent être nécessaires dans ce cas. Au moins, il est également possible de supprimer tout Java, si cela est utile.

Steve
la source
2

Ce que je fais sur les nouvelles machines Ubuntu 10.10 est

  • ajouter java-6-sun,
  • supprimez openJDK (ajoutez sun Java en premier, sinon un tas d'éléments seront supprimés, comme tomcat, etc.)

Alors ça va pour moi, plus de dépendances openJDK

Bob Yoplait
la source
java-6-sun n'est-ce pas le paquet ubuntu-default-package, ou l'est-il?
Fabian Zeindl
2

Les réponses données à cette question ne fonctionnaient pas pour moi. En d'autres termes, les éléments suivants ont échoué:

sudo apt-get purge sun-java5-jre sun-java6-font sun-java6-jre

Avec l'erreur:

Virtual packages like 'sun-java6-jre' can't be removed

Essayez plutôt ces instructions :

  1. Ouvrez le centre logiciel Ubuntu .
  2. Recherchez IcedTea.
  3. Supprimez IcedTea Java Plug-in ( icedtea-6-jre-cacao), s'il est installé.
  4. Sélectionnez OpenJDK Java 7 Runtime.
  5. Cliquez sur Installer.
  6. Attendez que le package de 41,6 Mo soit téléchargé et installé.

Le OpenJDK (IcedTea) est maintenant installé, ce qui devrait vous permettre (si vous aviez cette erreur) de continuer à installer le JDK d’Oracle sans erreur.

Voir également:

Dave Jarvis
la source
1

Premièrement: supprimez le plugin openjdk et icedtea.

sudo apt-get remove openjdk* icedtea*

Deuxièmement: copiez le fichier .bin jdk dans / opt ou / usr / java et extrayez-le.

sudo cp jdk_1.16.0.bin /usr/java

Troisièmement: mettez un lien du fichier java vers / usr / bin /

ln -s /usr/java/jdk_1.6.0/bin/java /usr/bin/java
ln -s /usr/java/jdk_1.6.0/bin/javac /usr/bin/javac

mettre à jour les alternatives en utilisant update-alternatives

Créez un lien symbolique vers le plugin Java dans le répertoire des plugins Firefox.

Créez un lien symbolique vers le fichier libnpjp2.so du plugin Java dans le répertoire des plugins Firefox:

   cd  

<Firefox>/plugins


 ln -s  

<JRE>/lib/i386/libnpjp2.so .

J'espère que cela t'aides.

Ubuntuser
la source
N'as-tu pas manqué une étape après cp, et avant de créer un lien? Et: vous suggérez une liaison manuelle, mais il y a 45 fichiers dans java / bin, la plupart d'entre eux étant exécutables. Souhaitez-vous créer 25 liens symboliques? Je préférerais changer le PATH.
utilisateur inconnu
pour autant que je sache, les étapes sont correctes. vous pouvez vous reporter au didacticiel sur la page d’installation de java de sun (oracle). les étapes ci-dessus ont bien fonctionné pour moi! laissez-moi savoir comment vous vous entendez.
Ubuntuser