130 votes

Basculer entre plusieurs versions de java

Lors de l'installation d'Android Studio sur Ubuntu 14.04, je reçois le message que ma version de Java ( javac 1.7.0_79 ) pose des problèmes. J'ai trouvé un solution de la façon d'installer une nouvelle version Oracle de Java :

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

Cependant, j'ai peur que cela n'écrase mes données existantes. open-jdk version de Java. Comme je ne sais pas lesquels de mes programmes dépendent de Java, je crains que cela ne fasse planter ces autres programmes.

Y a-t-il un moyen de s'assurer apt-get n'écrase pas mon précédent Java ? Je voudrais essentiellement avoir installé les deux et pouvoir passer de l'un à l'autre manuellement, en fonction de la version dont j'ai besoin.

168voto

danzel Points 5094

Apt-get n'écrasera pas les versions java existantes.

Pour passer d'une version de java installée à une autre, utilisez la fonction update-java-alternatives commandement.

Liste de toutes les versions de java :

update-java-alternatives --list

Définir la version de java par défaut (nécessite les droits de root) :

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

...où /path/to/java/version est l'une de celles listées par la commande précédente (par exemple /usr/lib/jvm/java-7-openjdk-amd64 ).


Informations complémentaires :

update-java-alternatives est un outil pratique qui utilise la fonction système d'alternatives ( update-alternatives ) pour définir un ensemble de liens vers la version de java spécifiée (par ex. java , javac , ...).

106voto

muet Points 1061

Utilisez

sudo update-alternatives --config java

qui liste toutes les versions installées avec la version active marquée et fournit un dialogue pour changer :

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: 

Utilisez

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

pour fixer $JAVA_HOME à partir de la version active actuelle

12voto

naXa Points 764

Configuration de Java

Vous pouvez configurer la version qui sera utilisée par défaut dans la ligne de commande en utilisant la fonction update-alternatives qui gère les liens symboliques utilisés pour les différentes commandes.

sudo update-alternatives --config java

Le résultat ressemblera à ce qui suit.

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:

Vous pouvez maintenant choisir le numéro à utiliser par défaut. Cela peut également être fait pour d'autres commandes Java, comme le compilateur ( javac ), le générateur de documentation ( javadoc ), l'outil de signature de JAR ( jarsigner ), et plus encore. Vous pouvez utiliser la commande suivante, en remplissant le champ commande que vous voulez personnaliser.

sudo update-alternatives --config command

Fixer le JAVA_HOME Variable d'environnement

De nombreux programmes, tels que les serveurs Java, utilisent la variable d'environnement JAVA_HOME pour déterminer l'emplacement de l'installation de Java.

Copiez le chemin d'accès de votre installation préférée, puis ouvrez le fichier /etc/environment en utilisant Sublime Text ou votre éditeur de texte préféré.

sudo subl /etc/environment

À la fin de ce fichier, ajoutez la ligne suivante, en veillant à remplacer le chemin mis en évidence par votre propre chemin copié.

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

Sauvegardez et quittez le fichier, puis rechargez-le : source /etc/environment .
Vous pouvez maintenant vérifier si la variable d'environnement a été définie en exécutant la commande suivante : echo $JAVA_HOME . Cela renverra le chemin que vous venez de définir.

9voto

brianjohnsen Points 101

En me basant sur la réponse de @muet, j'ai trouvé que cela fonctionnait parfaitement :

Ajoutez ceci à ~/.bashrc :

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

Ajouter aux alias :

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'

Vous pouvez alors basculer au sein du même Shell en utilisant uniquement : useJava7 o useJava8

0voto

jrunscript pourrait ne pas être disponible dans les futures versions, donc le choix le plus sûr est d'utiliser export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) comme suggéré par @ThiamTeck. Aussi .bashrc doit être exécuté à chaque fois que vous changez de version de java en utilisant update-alternative commandement.

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