Несколько JDK не работает должным образом в Ubuntu 14.04

версии JDK (jdk1.7.0_21 и jdk1.7.0_55)

установлены и настроены, как показано ниже.

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

и я выбираю / изменяю JDK по умолчанию на

update-alternatives --config java
update-alternatives --config javac
update-alternatives --config javaws

После этого, если я запускаю java -version, а jdk1.7.0_55 по умолчанию, вывод будет таким, как показано ниже.

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)

, но по умолчанию jdk1.7.0_21 выдает сообщение типа

java: ошибка при загрузке общих библиотек: libjli.so : невозможно открыть файл общих объектов : Нет такого файла или каталога

Если я выдаю: , найдите 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

Так что ясно, что хотя я выбрал jdk1.7.0_21, но каким-то образом он все еще указывает на jdk1.7.0_55

Пытался переименовать jdk1.7.0_55, но не повезло.

Не уверен, как это исправить. Заранее благодарим за помощь:)

Решение :: Мой jdk1.7.0_21 был сломан, скачал свежую копию формы oracle untar его в /usr/lib/jvm/, которая была им.

]
5
задан 3 May 2014 в 23:20

1 ответ

Существует, слишком много обосновывает, почему Вы видите эту ошибку.

Могли Вы работать, все это управляет один за другим, и вывод сообщения здесь:

  1. file /usr/bin/java
  2. type /usr/bin/java
  3. echo $JAVA_HOME
  4. echo $PATH
  5. ls -ahl /usr/lib/jvm

Затем - использование update-alternatives выберите jdk1.7.0_55 и выполните это

$ ldd $(which java)

использование update-alternatives выберите jdk1.7.0_21 и выполните это

$ ldd $(which java)

с другой стороны для jdk1.7.0_21 выполняет это

$ sudo java -version

ОБНОВЛЕНИЕ. Ответ

Для всех, у кого есть та же проблема:

В первую очередь, выполненный sudo ldconfig. Безопасно работать ldconfig в любое время

После долгого обсуждения мы пришли к заключению, что jdk1.7.0_21 повреждается.

Как мы определяем его:

  1. Когда выбирают Java jdk1.7.0_21, sudo java -version дайте ошибку даже если выполненный как корень.
  2. find /usr/lib/jvm -name "libjli.so", эта команда должна показать это libjli расположен в папке где jdk1.7.0_21 установленный. В нашем случае это не было.

В других случаях:

Проверьте, что jdk принадлежит root:root

Проверьте это /usr/bin/java символьная ссылка, не исполняемый файл.

Проверить PATH, Java не должен быть в ПУТИ, если Вы используете update-alternatives.

Также вот полезные ссылки:

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
ответ дан 3 May 2014 в 23:20

Другие вопросы по тегам:

Похожие вопросы: