Comment définir Java d'Oracle comme Java par défaut dans Ubuntu?


134

Comment modifier la valeur de JAVA_HOMEdans Ubuntu pour qu'elle pointe vers Java d'Oracle?

Doit-il pointer vers java-6-sunou java-6-sun-1.6.0.24?

Réponses:


175

Je mets la ligne:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

dans mon ~/.bashrcdossier.

/usr/lib/jvm/java7-oracledoit ê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 qu'au cas où il y aurait une nouvelle version de la JVM, vous n'avez pas besoin de mettre à jour votre .bashrcfichier, il devrait automatiquement pointer vers la nouvelle version.

Si vous souhaitez définir JAVA_HOMEdes variables d'environnement globalement et au niveau du système, l'utilisation doit être définie dans le /etc/environmentfichier.


4
Ou /usr/lib/jvm/java-1.6.0-openjdk-amd64 si vous utilisez OpenJDK au lieu du JDK d'Oracle (Sun).
pm_labs

7
Vous pouvez utiliser export JAVA_HOME = / usr / lib / jvm / default-java /
noomz

@noomz Comment obtenez-vous cela si default-java n'existe pas?
AHungerArtist

@AHungerArtist Vous obtenez cela si vous installez openjdk ou d'autres packages Ubuntu officiellement pris en charge. Malheureusement, il n'est pas pris en charge pour Oracle JDK utilisant le ppa webupd8 / java. En fait, je ne sais pas du tout ce que fait le oracle-java7-set-defaultpaquet.
Melvyn

Où mettez-vous cela dans le dossier?
Czipperz

166

Si vous souhaitez le modifier globalement et au niveau du système;

Dans

/etc/environment

ajoutez cette ligne:

JAVA_HOME=/usr/lib/jvm/java-7-oracle

27

@metdos la réponse ci-dessus n'est pas globale ou au niveau du système?
Android Killer

1
@AndroidKiller avez-vous vérifié le lien indiqué par Daniel Kullmann?
metdos

@metdos Fonctionne bien, mais référencer des variables ne fonctionne pas pour moi ... $JAVA_HOMEne résout pas lorsqu'il est utilisé comme ça PATH=$JAVA_HOME/bin, j'ai essayé de redémarrer, aucun effet. Dois-je le faire exportou set JAVA_HOMEdans ce fichier ou dans mon profil?
raffian

@Raffian Je ne suis pas sûr des différents cas d'angle, de cette façon cela a parfaitement fonctionné pour moi, pour plus d'informations, je vous recommande de lire help.ubuntu.com/community/EnvironmentVariables
metdos

53

pour définir le kit de développement Java SE d'Oracle comme Java par défaut du système, téléchargez simplement le dernier kit de développement Java SE à partir d' ici, puis créez un répertoire quelque part que vous aimez dans votre système de fichiers, par exemple, /usr/javaextrayez 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 JAVA_HOMEvariable d'environnement:

$ 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 d'Oracle est défini comme java par défaut en:

$ 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 chiffres à 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 pourriez 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.


1
oui, cette solution est bien plus propre que celle acceptée.
simone cittadini

Les commentaires de @JayminGajjar qui expriment leur gratitude ne sont pas nécessaires. Le mécanisme de soutien des bonnes questions / réponses dans ce site Web est de les voter. Si vous ne possédez pas assez de réputation pour le faire mais que vous en avez assez pour commenter, essayez d'inclure des informations utiles, comme sur quel système et quel système d'exploitation avez-vous testé et que cette solution fonctionne, etc.
Barracuda

@Barracuda j'ai déjà voté, vous avez raison sur les informations, cela a fonctionné pour moi sur Ubuntu 16.10 OS serveur 64 bits :)
Jaymin Gajjar

20

Si vous voulez 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-le si nécessaire):

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Puis dans un terminal run:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

Ma deuxième question est la suivante: devrait-il pointer vers java-6-sun ou java-6-sun-1.6.0.24?

Il doit toujours pointer vers java-7-oraclele dernier lien symbolique installé (en supposant que vous ayez installé Java à partir des référentiels Ubuntu et maintenant à partir du téléchargement disponible sur oracle.com).


12

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


10

Si vous faites une sorte de développement, vous devez pointer vers le JDK (Java Development Kit). Sinon, vous pouvez pointer vers le JRE (Java Runtime Environment).

Le JDK contient tout ce que le JRE a et plus encore. Si vous exécutez simplement des programmes Java, vous pouvez pointer vers le JRE ou le JDK.

Vous devez définir en JAVA_HOME fonction du Java actuel que vous utilisez. readlinkaffichera la valeur d'un lien symbolique pour Java courant et sedl'ajustera au répertoire JRE:

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

Si vous souhaitez configurer JAVA_HOME en JDK, vous devez remonter d'un dossier de plus:

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

7

Si vous souhaitez utiliser une version spécifique de Java lorsque plusieurs JDK sont installés, il se peut que la configuration de JAVA_HOME ne fonctionne pas.

Vous devez utiliser sudo update-alternatives --config javapour définir Java par défaut.

Reportez-vous à /ubuntu/121654/how-to-set-default-java-version .


5

Voyez ceci ; courir

sudo  update-java-alternatives --list

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

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

pour choisir le 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 exécutable java à la fois; tu peux courir

sudo  update-alternatives --config java[Tab]

pour voir les commandes Java qui peuvent ê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: à partir 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.


Une autre approche:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
Xdg
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.