web-dev-qa-db-fra.com

Basculer entre plusieurs versions Java

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

Sudo apt-add-repository ppa:webupd8team/Java
Sudo apt-get update
Sudo apt-get install Oracle-Java8-installer

Cependant, je crains que cela ne remplace ma version open-jdk de Java existante. Comme je ne sais pas lequel de mes programmes dépend de Java, je crains que cela ne plante ces autres programmes.

Existe-t-il un moyen de s’assurer que apt-get n’écrase pas mon Java précédent? Je voudrais fondamentalement avoir installé les deux et pouvoir basculer entre eux manuellement, en fonction de la version dont j'ai besoin.

54
mcExchange

Apt-get ne remplacera pas les versions Java existantes.

Pour basculer entre les versions Java installées, utilisez la commande update-Java-alternatives.

Répertoriez toutes les versions Java:

update-Java-alternatives --list

Définissez la version Java par défaut (nécessite des autorisations root):

Sudo update-Java-alternatives --set /path/to/Java/version

... où /path/to/Java/version est l’un de ceux répertoriés par la commande précédente (par exemple /usr/lib/jvm/Java-7-openjdk-AMD64).


update-Java-alternatives est un outil pratique qui utilise la système alternatif (update-alternatives) de Debian pour définir un ensemble de liens vers la version spécifiée Java (par exemple, Java, javac, ...).

68
danzel

Utilisation

Sudo update-alternatives --config Java

qui répertorie toutes les versions installées avec la version actuelle active marquée et fournit une boîte de dialogue permettant de basculer:

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: 

Utilisation

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

définir $Java_HOME à partir de la version active en cours

38
muet

Basé 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'

Ensuite, vous pouvez basculer dans le même shell en utilisant uniquement: useJava7ou useJava8

4
brianjohnsen

Configuration de Java

Vous pouvez configurer la version par défaut à utiliser dans la ligne de commande à l'aide de update-alternatives, qui gère les liens symboliques utilisés pour différentes commandes.

Sudo update-alternatives --config Java

La sortie 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, telles que le compilateur (javac), le générateur de documentation (javadoc), l'outil de signature JAR (jarsigner), etc. Vous pouvez utiliser la commande suivante en remplissant la commande que vous souhaitez personnaliser.

Sudo update-alternatives --config command

Définition de la variable d'environnement Java_HOME

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

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

Sudo subl /etc/environment

A la fin de ce fichier, ajoutez la ligne suivante en vous assurant de remplacer le chemin en surbrillance par votre propre chemin copié.

Java_HOME="/usr/lib/jvm/Java-8-Oracle"

Enregistrez 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 retournera le chemin que vous venez de définir.

2
naXa