web-dev-qa-db-fra.com

Problème pour définir Java_HOME

Dans ~/.bash_profile je règle ce qui suit:

export Java_HOME=/usr/lib/jvm/Java-7-openjdk-i386/bin/Java
export PATH=$PATH:/usr/lib/jvm/Java-7-openjdk-i386/bin

Après avoir sauvegardé et fermé j'ai couru:

Sudo su
source .bash_profile

echo $PATH apporte

root@ubuntu:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/Java-7-openjdk-i386/bin

which Java is

/usr/bin/Java

Mais si je commence smartgit, il y a l'avertissement suivant

ip@ubuntu:/usr/share/smartgithg/bin$ ./smartgithg.sh 
Warning: /usr/lib/jvm/Java-7-openjdk-i386/jre/bin/Java/bin/Java does not exist

Pourquoi 'quel Java' ne pointe pas vers le nouveau Java que j'ai installé? Et pourquoi contient $ PATH bin/Java/ deux fois?

7
user1662013

Vous pouvez sélectionner Java version à l'aide de la commande update-alternatives.

Exécuter ci-dessous la commande dans le terminal.

Sudo update-alternatives --config Java

Et tapez le numéro de sélection que vous souhaitez utiliser.

Comme ça:

selecting Java version

Attention: La description ci-dessus concerne les procédures permettant de modifier une version par défaut. Ce n'est pas une réponse à cette question, mais devrait vous aider à définir le Java home

7
Franklin B

Ubuntu utilise le système update-alternatives pour gérer quelle installation du JDK ou du JRE Java devrait être utilisée. Cela vous permet d'installer plusieurs versions de Java, tout en contrôlant celle qui est utilisée par défaut.

C'est pourquoi which Java n'affiche pas la version que vous avez installée. /usr/bin/Java est juste un lien symbolique. Si vous exécutez ls -l /usr/bin/Java, vous verrez quelque chose comme:

lrwxrwxrwx 1 root root 22 Jul  4  2013 /usr/bin/Java -> /etc/alternatives/Java

et si vous suivez la piste en exécutant ls -l /etc/alternatives/Java, vous verrez quelque chose comme:

lrwxrwxrwx 1 root root 39 Jul 15  2013 /etc/alternatives/Java -> /usr/lib/jvm/Java-7-Oracle/jre/bin/Java

mais le chemin exact dépendra de la version que vous avez sélectionnée.

Vous pouvez sélectionner la version de Java que vous souhaitez exécuter à l'aide de cette commande:

Sudo update-alternatives --config Java

Votre chemin contient bin/Java deux fois parce que vous avez configuré $Java_HOME de manière incorrecte. $Java_HOME doit pointer vers le répertoire racine de votre installation Java; dans votre cas, /usr/lib/jvm/Java-7-openjdk-i386/. Vous le pointiez sur le binaire Java lui-même.

Vous ne devriez pas avoir besoin d'ajouter $Java_HOME à votre $PATH sauf si vous installez Java manuellement et que vous n'utilisez pas update-alternatives, car /usr/bin est déjà dans votre $PATH.

0
David Edwards

Vous avez mal défini votre variable Java_HOME dans votre fichier ~/.bash_profile. Changez votre variable Java_HOME en:

export Java_HOME=/usr/lib/jvm/Java-7-openjdk-i386/

et ensuite source ~/.bash_profile

Cela devrait résoudre votre problème.

0
jobin