OS: UBUNTU 18.04
J'avais installé Oracle Java 8 plus tôt. Mais j'ai décidé de passer à ouvrir JDK 11. c'est installé avec succès. Java -version
openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment (build 11.0.2 + 9-Ubuntu-3ubuntu118.04.3) OpenJDK 64-Bit Server VM ( build 11.0.2 + 9-Ubuntu-3ubuntu118.04.3, mode mixte, partage)
Ensuite, j'ai défini Java_HOME Sudo nano/etc/environment Modifications du fichier: PATH = "/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/$ Java_HOME = "/ usr/lib/jvm/Java-11-openjdk-AMD64 /"
Puis exécuté: source/etc/environment
echo $ Java_HOME
/usr/lib/jvm/Java-11-openjdk-AMD64 /
Mais au moment où je quitte le terminal et que je lance à nouveau le terminal: J'obtiens cette sortie:
▶ echo $ Java_HOME/usr/lib/jvm/Java-8-Oracle
que vous pouvez voir n'est pas ce qui est attendu. Sil te plait aide moi
Les réponses et certains commentaires se concentrent sur la façon de définir Java_HOME
vers la version 11 mais la question porte en partie sur "où est définie la version 8?". Pour répondre à cela, voir:
Utilisez cette commande:
$ Sudo grep -rnw --exclude-dir={boot,dev,lib,media,mnt,proc,root,run,sys,/tmp,tmpfs,var} '/' -e '/usr/lib/jvm/Java-8-Oracle' | grep Java_HOME
/etc/profile.d/jdk.sh:4:export Java_HOME=/usr/lib/jvm/Java-8-Oracle
/etc/profile.d/jdk.csh:4:setenv Java_HOME /usr/lib/jvm/Java-8-Oracle
/home/rick/.gradle/daemon/4.6/daemon-14831.out.log:53:20:45:23.553 [DEBUG] (... SNIP ...) /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/Java-8-Oracle/bin:/usr/lib/jvm/Java-8-Oracle/db/bin:/usr/lib/jvm/Java-8-Oracle/jre/bin (... SNIP ...) Configuring env variables: {PATH=/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/Java-8-Oracle/bin:/usr/lib/jvm/Java-8-Oracle/db/bin:/usr/lib/jvm/Java-8-Oracle/jre/bin, (... SNIP ...)
C'est ce que mon système retourne. Le vôtre sera probablement différent. Pour faire court, le coupable est /etc/profile.d/jdk.sh
:
$ cat /etc/profile.d/jdk.sh
setenv J2SDKDIR /usr/lib/jvm/Java-8-Oracle
setenv J2REDIR /usr/lib/jvm/Java-8-Oracle/jre
setenv PATH ${PATH}:/usr/lib/jvm/Java-8-Oracle/bin:/usr/lib/jvm/Java-8-Oracle/db/bin:/usr/lib/jvm/Java-8-Oracle/jre/bin
setenv Java_HOME /usr/lib/jvm/Java-8-Oracle
setenv DERBY_HOME /usr/lib/jvm/Java-8-Oracle/db
Vous supposez probablement /etc/profile.d/jdk.csh
doit également changer. En effet, il contient exactement le même contenu que /etc/profile.d/jdk.sh
Il existe un meilleur moyen que de parcourir les fichiers ligne par ligne et de modifier un 8
à un 11
.
La méthode la plus simple consiste à utiliser Java. À partir de cela Demandez à Ubuntu Q&A : Définir JDK 7 par défaut
Pour obtenir une liste de vos plates-formes Java Java installées, exécutez la commande suivante à partir du terminal:
Sudo update-alternatives --config Java
Cela vous donnera une sortie de liste similaire à ceci:
There are 2 choices for the alternative Java (providing /usr/bin/Java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/Java-6-Oracle/jre/bin/Java 1070 auto mode
1 /usr/lib/jvm/Java-7-openjdk-i386/jre/bin/Java 1051 manual mode
* 2 /usr/lib/jvm/Java-6-openjdk-i386/jre/bin/Java 1069 manual mode
Press enter to keep the current choice[*], or type selection number:
Essayez de lire ces réponses dans le lien. Ils visent à rendre les changements de variables d'environnement persistants. Je pense que ce qui se passe est après la fermeture du terminal, ils reviennent. Voici le lien: Faire en sorte que les modifications des variables d'environnement persistent
L'endroit le plus simple pour définir cela est dans .bashrc qui peut être fait rapidement de cette façon:
echo Java_HOME=/usr/lib/jvm/Java-11-openjdk-AMD64/ >> .bashrc
Cela en fera la dernière ligne lue lors de l'initialisation de bash et devrait garantir que Java_HOME est correctement défini. Si vous devez faire quelque chose de plus compliqué, vous voudrez en savoir un peu plus sur la façon dont le terminal s'initialise. Je vous recommande de commencer par google-ing bashrc.