web-dev-qa-db-fra.com

Plusieurs JDK ne fonctionnent pas correctement dans Ubuntu 14.04

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/_.

5
Suvasish Sarker

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:

  1. file /usr/bin/Java
  2. type /usr/bin/Java
  3. echo $Java_HOME
  4. echo $PATH
  5. 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:

  1. Lorsque vous choisissez Java jdk1.7.0_21, Sudo Java -version, indiquez une erreur même si vous l'utilisez en tant que root .
  2. 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:

https://unix.stackexchange.com/questions/16656/problem-to-launch-Java-at-debian-error-while-loading-shared-libraries-libjli

https://www.centos.org/forums/viewtopic.php?t=16398

https://superuser.com/questions/310371/problem-launch-Java-on-debian-error-while-loading-shared-libraries-libjli-so

3
c0rp