web-dev-qa-db-fra.com

Comment définir le Java d'Oracle en tant que Java par défaut dans Ubuntu?

Comment puis-je changer la valeur de Java_HOME dans Ubuntu pour qu'elle pointe vers Java?

Doit-il pointer sur Java-6-Sun ou Java-6-Sun-1.6.0.24?

130
Ashish Agarwal

Je mets la ligne:

export Java_HOME=/usr/lib/jvm/Java-7-Oracle

dans mon fichier ~/.bashrc.

/usr/lib/jvm/Java7-Oracle devrait être un lien symbolique pointant vers /usr/lib/jvm/Java-7-Oracle-[version number here].

La raison pour laquelle il s'agit d'un lien symbolique est que dans le cas où il y aurait une nouvelle version de la machine virtuelle, il n'est pas nécessaire de mettre à jour votre fichier .bashrc, il devrait automatiquement pointer vers la nouvelle version.

Si vous souhaitez définir les variables d'environnement Java_HOME globalement et au niveau du système, vous devez définir l'utilisation dans le fichier / etc/environment.

172
srkiNZ84

Si vous voulez le changer globalement et au niveau du système;

Dans

/etc/environment

ajoutez cette ligne:

Java_HOME=/usr/lib/jvm/Java-7-Oracle
165
metdos

pour définir le Java SE Development Kit d’Oracle comme valeur par défaut du système Java il suffit de télécharger le dernier Java SE Development Kit de ici , puis de créer un répertoire quelque part que vous aimez dans votre système de fichiers, par exemple /usr/Java, extrayez maintenant les fichiers que vous venez de télécharger dans ce répertoire:

$ Sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/Java

maintenant pour définir votre variable d’environnement Java_HOME:

$ Java_HOME=/usr/Java/jdk1.8.0_05/
$ Sudo update-alternatives --install /usr/bin/Java java ${Java_HOME%*/}/bin/Java 20000
$ Sudo update-alternatives --install /usr/bin/javac javac ${Java_HOME%*/}/bin/javac 20000

assurez-vous que le Java de l'Oracle est défini comme valeur par défaut Java par:

$ update-alternatives --config Java

vous obtenez quelque chose comme ça:

There are 2 choices for the alternative Java (providing /usr/bin/Java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /opt/Java/jdk1.8.0_05/bin/Java                  20000     auto mode
  1            /opt/Java/jdk1.8.0_05/bin/Java                  20000     manual mode
  2            /usr/lib/jvm/Java-6-openjdk-i386/jre/bin/Java   1061      manual mode

Press enter to keep the current choice[*], or type selection number:

faites attention à l'astérisque devant les nombres à gauche et si le bon n'est pas défini, choisissez le bon en tapant le numéro et en appuyant sur entrée. testez maintenant votre Java:

$ Java -version

si vous obtenez quelque chose comme ce qui suit, vous êtes prêt à partir:

Java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)

notez également que vous pouvez avoir besoin d'une autorisation root ou être dans le groupe sudoers pour pouvoir le faire. J'ai testé cette solution sur Ubuntu 12.04 et Debian Wheezy et cela fonctionne dans les deux cas.

49
Barracuda

Si vous souhaitez que cette variable d'environnement soit disponible pour tous les utilisateurs et au démarrage du système, vous pouvez ajouter ce qui suit à / etc/profile.d/Java.sh (créez-la si nécessaire):

export JDK_HOME=/usr/lib/jvm/Java-7-Oracle
export Java_HOME=/usr/lib/jvm/Java-7-Oracle

Ensuite, dans un terminal:

Sudo chmod +x /etc/profile.d/Java.sh
source /etc/profile.d/Java.sh

Ma deuxième question est la suivante: faut-il indiquer Java-6-Sun ou Java-6-Sun-1.6.0.24?

Il faut toujours indiquer Java-7-Oracle en tant que lien symbolique vers le dernier installé (en supposant que vous avez installé Java à partir des référentiels Ubuntu et maintenant à partir du téléchargement disponible sur Oracle.com).

19
Jits

Java 6

export Java_HOME=/usr/lib/jvm/Java-1.6.0-openjdk-AMD64

ou Java 7

export Java_HOME=/usr/lib/jvm/Java-1.7.0-openjdk-AMD64

12

Si vous faites du développement, vous devez vous reporter au JDK (Java Development Kit). Sinon, vous pouvez pointer sur JRE (Java Runtime Environment).

Le JDK contient tout ce que le JRE a et plus encore. Si vous venez d'exécuter des programmes Java, vous pouvez pointer soit le JRE, soit le JDK.

Vous devez définir Java_HOME sur la base de Java actuel que vous utilisez. readlink affichera la valeur d'un lien symbolique pour le Java actuel et sed l'adaptera au répertoire JRE:

export Java_HOME=$(readlink -f /usr/bin/Java | sed "s:bin/Java::")

Si vous souhaitez configurer Java_HOME sur JDK, vous devez accéder à un dossier supplémentaire:

export Java_HOME=$(readlink -f /usr/bin/Java | sed "s:jre/bin/Java::")
10
user987339

Si vous souhaitez utiliser une version spécifique de Java lorsque plusieurs JDK sont installés, la définition de Java_HOME risque de ne pas fonctionner.

Vous devez utiliser Sudo update-alternatives --config Java pour définir Java par défaut.

Reportez-vous à la section https://askubuntu.com/questions/121654/how-to-set-default-Java-version .

7
prosseek

Voir this ; courir

Sudo  update-Java-alternatives --list

pour lister toutes les Java installations sur une machine par nom et par répertoire, puis exécuter

Sudo  update-Java-alternatives --set [JDK/JRE name e.g. Java-8-Oracle]

choisir quel JRE/JDK utiliser.

Si vous souhaitez utiliser différents JDK/JRE pour chaque tâche Java, vous pouvez exécuter update-alternatives pour configurer un seul Java exécutable à la fois. tu peux courir

Sudo  update-alternatives --config Java[Tab]

pour voir les commandes Java pouvant être configurées (Java, javac, javah, javaws, etc.). Puis

Sudo  update-alternatives --config [javac|Java|javadoc|etc.]

associera cette tâche/commande Java à un JDK/JRE particulier.

Vous devrez peut-être également définir Java_HOME pour certaines applications: de cette réponse vous pouvez utiliser

export Java_HOME=$(readlink -f /usr/bin/Java | sed "s:bin/Java::")

pour les JRE, ou

export Java_HOME=$(readlink -f /usr/bin/Java | sed "s:jre/bin/Java::")

pour les JDK.

4
WillC