web-dev-qa-db-fra.com

JAVA_HOME et PATH sont définis mais Java -version affiche toujours l'ancien

J'utilise Linux Mint Cinnamon 14. J'ai défini les variables d'environnement $Java_HOME et $PATH dans ~/.profile comme suit:

export Java_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
export PATH=/home/aqeel/development/jdk/jdk1.6.0_35/bin:$PATH

J'ai ensuite fait source ~/.profile pour apporter les modifications appropriées.

Lorsque j'exécute la commande Java -version pour vérifier la version Java active, elle affiche la version Java par défaut (déjà installée open-jdk). Comment puis-je remplacer le fichier open-jdk par défaut par celui que j'ai téléchargé?

METTRE À JOUR:

which Java dit/usr/bin/Java

$Java_HOME/bin/Java -version dit 'permission refusée'

Sudo $Java_HOME/bin/Java -version (demande le mot de passe, alors) dit commande non trouvée

mais cd $Java_HOME/bin et ls montre que c'est le bon répertoire.

40
user517491

Bien que votre configuration semble correcte, il y a quelques points à vérifier:

  1. La sortie de env - en particulier PATH.
  2. command -v Java vous dit quoi?
  3. Existe-t-il un exécutable Java dans $Java_HOME\bin et le bit d'exécution est-il défini? Sinon, chmod a+x Java le.

J'espère que vous avez source 'votre .profile après avoir ajouté/modifié les Java_HOME et PATH?

Vous pouvez également vous aider lors de la maintenance future de votre installation JDK en écrivant ceci à la place:

export Java_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
export PATH=$Java_HOME/bin:$PATH

Ensuite, il vous suffit de mettre à jour une seule variable env lorsque vous configurez l'installation du JDK.

Enfin, vous devrez peut-être exécuter hash -r pour effacer le cache du programme Bash. D'autres coquilles peuvent avoir besoin d'une commande similaire.

À votre santé,

59
Anders R. Bystrup

update-Java-alternatives 

L’exécutable Java n’est pas trouvé avec votre Java_HOME, il ne dépend que de votre PATH.

update-Java-alternatives est un bon moyen de le gérer pour l’ensemble du système via:

update-Java-alternatives -l

Exemple de sortie:

Java-7-Oracle 1 /usr/lib/jvm/Java-7-Oracle
Java-8-Oracle 2 /usr/lib/jvm/Java-8-Oracle

Choisissez l'une des alternatives:

Sudo update-Java-alternatives -s Java-7-Oracle

Comme update-alternatives, cela fonctionne via la gestion des liens symboliques. L'avantage est qu'il gère les liens symboliques vers tous les utilitaires Java en même temps: javac, Java, javap, etc.

Je ne vois pas encore d'effet Java_HOME sur le JDK. Jusqu'à présent, je ne l'ai vu utilisé que dans des outils tiers, par exemple. Maven .

$ Java_HOME/bin/Java -version dit 'autorisation refusée'

Si vous ne pouvez pas accéder au code ni l'exécuter, il sera ignoré s'il est ajouté à votre chemin. Vous devez le rendre accessible et exécutable ou en obtenir un exemplaire.

Faire un 

ls -ld $Java_HOME $Java_HOME/bin $Java_HOME/bin/Java

pour voir pourquoi vous ne pouvez pas accéder ou exécuter ce programme ,.

4
Peter Lawrey

Quand il cherche Java, il regarde de gauche à droite dans les entrées de chemin qui sont séparées par: vous devez donc ajouter le chemin du dernier répertoire jdk/bin avant/usr/bin. arrêtez de chercher plus loin.

pATH =/usr/Java/jdk_1.8/bin:/usr/bin: ..... et ainsi de suite.

puis initialisez le profil utilisateur à l'aide de la commande: source ~/.bash_profile

et vérifier avec: [quel Java]

vous aurez le bon.

3
SandeepGodara

Si vous souhaitez utiliser les JDK téléchargés du site Oracle , ce qui a fonctionné pour moi (avec Mint) utiliseupdate-alternatives:

  1. J'ai téléchargé le JDK et l'ai extrait n'importe où, par exemple dans /home/aqeel/development/jdk/jdk1.6.0_35
  2. Iran:

    Sudo update-alternatives --install /usr/bin/Java java /home/aqeel/development/jdk/jdk1.6.0_35/bin/Java 1`
    

    Vous pouvez maintenant exécuter Sudo update-alternatives --config Java et choisir votre version de Java .

  3. Cela ne définit pas la variable Java_HOME , que je voulais configurer, je l'ai donc ajoutée à mon ~/.bashrc, y compris une instruction export Java_HOME="/home/aqeel/development/jdk/jdk1.6.0_35"

Maintenant, j'avais deux JDK téléchargés (supposons que le second a été extrait sur /home/aqeel/development/jdk/jdk-10.0.1).

Comment pouvons-nous changer Java_HOME dynamiquement en fonction du Java actuel utilisé?

Ma solution n'est pas très élégante, je suis presque certaine qu'il existe de meilleures options, mais quoi qu'il en soit:

  1. Pour modifier Java_HOME de manière dynamique en fonction de l'alternative Java choisie , j'ai ajouté ce fragment de code au ~/.bashrc:

    export Java_HOME=$(update-alternatives --query Java | grep Value: | awk -F'Value: ' '{print $2}' | awk -F'/bin/Java' '{print $1}')
    

Enfin (ceci est hors de portée) si vous devez changer la version de Java constamment , vous voudrez peut-être prendre en compte:

  1. Ajouter un alias à votre ~./Bash_aliases:

    alias change-Java="Sudo update-alternatives --config Java"
    

(Vous devrez peut-être créer le fichier et éventuellement commenter la section correspondante dans ~/.bashrc)

2
Gerardo Roza

La mise à jour du ~/.profile ou du ~/.bash_profile ne fonctionne parfois pas. Je viens de supprimer JDK 6 et sourced .bash_profile

Essayez de lancer ceci:

Sudo rm -rd jdk1.6.0_* #it may not let you delete without Sudo

Ensuite, modifiez/ajoutez vos variables Java_HOME et PATH.

source ~/.bash_profile #assuming you've updated $Java_HOME and $PATH
0
javaProgrammer

Il existe un moyen simple de supprimer le lien symbolique de "/ usr/bin". Ça va marcher.

0
Bineeth

Dans Linux Mint 18 Cinnamon, assurez-vous de vérifier /etc/profile.d/jdk_home.sh J'ai renommé ce fichier en jdk_home.sh.old et mon chemin ne continue pas à être écrasé. voir Java 9 comme prévu. Même si j'ai correctement sélectionné Java 9 dans update-aternatives --config Java, ce fichier jdk_home.sh continuait à remplacer le $ PATH au démarrage.

0
JesseBoyd

vérifiez les versions Java disponibles sur votre système Linux à l'aide de la commande update-alternatives:

 $ Sudo update-alternatives --display Java

Maintenant qu'il existe des candidats appropriés à modifier, vous pouvez basculer la version Java par défaut parmi les JRE Java disponibles en exécutant la commande suivante:

 $ Sudo update-alternatives --config Java

Lorsque vous y êtes invité, sélectionnez la version Java que vous souhaitez utiliser.1, 2, 3, etc.

Vous pouvez maintenant vérifier que la version Java par défaut a été modifiée comme suit.

 $ Java -version
0
shabinjo