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.
Bien que votre configuration semble correcte, il y a quelques points à vérifier:
env
- en particulier PATH
.command -v Java
vous dit quoi?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é,
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 ,.
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.
Si vous souhaitez utiliser les JDK téléchargés du site Oracle , ce qui a fonctionné pour moi (avec Mint) utiliseupdate-alternatives:
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 .
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:
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:
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)
La mise à jour du ~/.profile
ou du ~/.bash_profile
ne fonctionne parfois pas. Je viens de supprimer JDK 6 et source
d .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
Il existe un moyen simple de supprimer le lien symbolique de "/ usr/bin". Ça va marcher.
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.
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