versions du JDK (jdk1.7.0_21 et jdk1.7.0_55)
Installé et configuré comme ci-dessous.
jdk1.7.0_21
_update-alternatives --install "/usr/bin/Java" "Java" "/usr/lib/jvm/jdk1.7.0_21/bin/Java" 1
update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_21/bin/javac" 1
update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0_21/bin/javaws" 1
Sudo chmod a+x /usr/bin/Java
Sudo chmod a+x /usr/bin/javac
Sudo chmod a+x /usr/bin/javaws
Sudo chown -R root:root /usr/lib/jvm/jdk1.7.0_21
_
jdk1.7.0_55
_update-alternatives --install "/usr/bin/Java" "Java" "/usr/lib/jvm/jdk1.7.0_55/bin/Java" 1
update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_55/bin/javac" 1
update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0_55/bin/javaws" 1
Sudo chmod a+x /usr/bin/Java
Sudo chmod a+x /usr/bin/javac
Sudo chmod a+x /usr/bin/javaws
Sudo chown -R root:root /usr/lib/jvm/jdk1.7.0_55
_
et je choisis/change le JDK par défaut par
_update-alternatives --config Java
update-alternatives --config javac
update-alternatives --config javaws
_
Après cela, si j’exécute _Java -version
_ tandis que _jdk1.7.0_55
_ est la valeur par défaut, la sortie est comme ci-dessous.
_root@ssa-lpt:/usr/lib/jvm# Java -version
Java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)
_
mais alors que _jdk1.7.0_21
_ est la valeur par défaut, un message comme
Java: erreur lors du chargement des bibliothèques partagées: libjli.so: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type
Si j'émets: localisez libjli.so
_/usr/lib/jvm/jdk1.7.0_55/jre/lib/AMD64/jli/libjli.so
/usr/lib/jvm/jdk1.7.0_55/lib/AMD64/jli/libjli.so
_
Il est donc clair que j’ai choisi _jdk1.7.0_21
_ mais que cela indique toujours _jdk1.7.0_55
_
J'ai essayé de renommer le _jdk1.7.0_55
_ mais sans succès.
Vous ne savez pas comment résoudre ce problème. Merci d'avance pour votre aide :)
Solution :: Mon _jdk1.7.0_21
_ a été cassé. Une nouvelle copie du formulaire a été téléchargée. Oracle l'a désarchivée dans _/usr/lib/jvm/
_.
Il y a trop de raisons pour lesquelles vous pouvez voir cette erreur.
Pourriez-vous s'il vous plaît lancer toutes ces commandes une à une, et poster le résultat ici:
file /usr/bin/Java
type /usr/bin/Java
echo $Java_HOME
echo $PATH
ls -ahl /usr/lib/jvm
Puis, en utilisant update-alternatives
, choisissez jdk1.7.0_55 et lancez-le.
$ ldd $(which Java)
en utilisant update-alternatives
choisissez jdk1.7.0_21 et lancez-le
$ ldd $(which Java)
puis à nouveau pour jdk1.7.0_21 exécuter cette
$ Sudo Java -version
UPDATE. Réponse
Pour tous ceux qui ont le même problème:
Tout d’abord, lancez Sudo ldconfig
. Il est prudent de lancer ldconfig
à tout moment
Après une longue discussion, nous avons conclu que jdk1.7.0_21 est corrompu.
Comment nous le déterminons:
jdk1.7.0_21
, Sudo Java -version
, indiquez une erreur même si vous l'utilisez en tant que root .find /usr/lib/jvm -name "libjli.so"
, cette commande doit indiquer que libjli
est situé dans le dossier où jdk1.7.0_21
est installé. Dans notre cas, ce n'était pas le cas.Dans d'autres cas:
Vérifiez que jdk appartient à root:root
Vérifiez que /usr/bin/Java
est un lien symbolique, non exécutable.
Vérifiez que PATH
, Java ne devrait pas figurer dans la variable PATH, si vous utilisez update-alternatives
.
Aussi, voici des liens utiles: