web-dev-qa-db-fra.com

Impossible de réinitialiser mon Java_HOME sur le nouveau Open JDK 11 Java installation

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

2
Prashant Bhushan

Pour répondre à la question

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


Pour résoudre le problème XY

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: 
1
WinEunuuchs2Unix

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

0
jwcooper

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.

0
RaidPinata