1 votes

Impossible de définir la bonne version de Java sur Ubuntu 14.10

Je viens de tenter d'installer la version la plus récente d'Oracle JDK (1.8) mais je n'arrive pas à remplacer la version actuelle de Java utilisée par le système. J'ai défini la variable JAVA_HOME pour pointer vers la nouvelle installation, l'ai ajoutée au chemin d'accès et ai exporté les variables, comme indiqué ci-dessous :

Contenu de /etc/profile :

# /etc/profile : fichier de profil système pour le shell Bourne (sh(1))
# et les shells compatibles Bourne (bash(1), ksh(1), ash(1), ...).

if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # Le fichier bash.bashrc définit déjà le PS1 par défaut.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

# L'umask par défaut est désormais géré par pam_umask.
# Voir pam_umask(8) et /etc/login.defs.

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
JAVA_HOME=/usr/local/java/jdk1.8.0_40
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export PATH 
~        

Sortie des variables d'environnement :

echo $JAVA_HOME
/usr/local/java/jdk1.8.0_40

echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java/jdk1.8.0_40/bin

Mais voici le problème :

java -version
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

which java
/usr/bin/java

javac -version
javac 1.7.0_72

'java -version' et javac pointent toujours vers l'installation originale. J'ai installé gradle (pour lequel j'ai effectué la mise à niveau en premier lieu), qui pointe vers la nouvelle installation.

gradle --version

------------------------------------------------------------
Gradle 1.5
------------------------------------------------------------

Gradle build time : dimanche 15 juin 2014 15:27:36 UTC
Groovy : 1.8.6
Ant : Apache Ant(TM) version 1.9.4 compilé le 9 mai 2014
Ivy : version non officielle
JVM : 1.8.0_40 (Oracle Corporation 25.40-b25)
OS : Linux 3.16.0-31-generic amd64

Références supplémentaires :

update-alternatives --display java
java - mode automatique
  le lien pointe actuellement vers /usr/lib/jvm/java-7-oracle/jre/bin/java
/usr/lib/jvm/java-7-oracle/jre/bin/java - priorité 2
  esclave java.1.gz : /usr/lib/jvm/java-7-oracle/man/man1/java.1.gz
La version 'meilleure' actuelle est '/usr/lib/jvm/java-7-oracle/jre/bin/java'.

update-alternatives --display javac
javac - mode automatique
  le lien pointe actuellement vers /usr/lib/jvm/java-7-oracle/bin/javac
/usr/lib/jvm/java-7-oracle/bin/javac - priorité 2
  esclave javac.1.gz : /usr/lib/jvm/java-7-oracle/man/man1/javac.1.gz
La version 'meilleure' actuelle est '/usr/lib/jvm/java-7-oracle/bin/javac'.

Comment puis-je résoudre ce problème ? Toute aide serait grandement appréciée ! De plus, si je dois supprimer la version antérieure v1.7, comment dois-je procéder ?

3voto

Vous devriez utiliser les alternatives : une façon qu'Ubuntu propose pour prendre en charge plusieurs versions d'un logiciel.

Après avoir installé Oracle JDK, spécifiez les alternatives :

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_40/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_40/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_40/bin/javaws" 1

Après l'installation, sélectionnez les alternatives par défaut :

sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javaws

Ensuite, vous pouvez sélectionner dans une liste l'alternative à utiliser.

WebUpd8 PPA

WebUpd8 est un site Web Ubuntu populaire et ils disposent de nombreux PPAs très utiles. Leur PPA Java est excellent, car en raison de l'EULA d'Oracle, Java Oracle ne peut pas être redistribué, mais le PPA exécute un programme d'installation JDK (similaire à l'approche flash-installer).

Ce PPA est régulièrement mis à jour et offre même Java 9. Ainsi, vous pouvez toujours garder votre Java automatiquement mis à jour et correctement configuré.

Pour ajouter le PPA et installer Java 8 à partir de là :

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

2voto

heemayl Points 85741

Votre installation est correcte mais vous avez besoin du système d'alternatives pour définir le binaire par défaut à exécuter lorsque vous tapez simplement jave ou javac. Fondamentalement, le système d'alternatives vous permet de sélectionner un binaire à exécuter lorsqu'il existe de nombreux autres binaires alternatifs ayant la même fonctionnalité.

Dans votre cas, vous avez deux versions de java installées avec alternatives n'ayant que l'ancienne version liée en tant que binaire générique java. Vous devez ajouter la nouvelle version dans les alternatives binaires de java et également la définir comme la valeur par défaut en lui donnant priorité sur les autres à l'aide d'une valeur numérique.

sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_40/bin/java 100
sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.8.0_40/bin/javac 100

Cette commande fera l'affaire, nous avons lié les nouveaux binaires aux alternatives java et javac, en les définissant également comme défaut en leur donnant une priorité plus élevée (100) par rapport aux anciennes versions (2 - vérifié par update-alternatives --display java & update-alternatives --display javac, vous pouvez également utiliser update-alternatives --query java).

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