Не удается найти открытый общий объектный файл libjli.so - нет такого файла или каталога

8

На 64-битном RHEL5, работающем под управлением Java 1.6.0 с обновлением 16, root может успешно запустить программу на Java, но пользователь не может этого сделать, потому что libjli.soпредположительно не может быть найден. SELinux выключен, и среда до запуска программы остается прежней. Я попытался положить libjli.soв LD_LIBRARY_PATHно это не делает разницы.

Как я могу исправить эту ошибку?

joeforker
источник

Ответы:

9

Первая возможность, которая приходит на ум, - это то, что libjli.soона доступна для чтения только пользователю root. Итак, шаг первый:

ls -l $(locate libjli.so)

Если он находится в нечетном месте (не в /usr/libили /lib), создайте файл, /etc/ld.so.conf.d/java.confсодержащий путь к каталогу, в котором он находится, libjli.soи запустите /sbin/ldconfigот имени пользователя root.

Для получения дополнительной информации об устранении неполадок выполните эту команду, один раз как пользователь root и один раз как пользователь без полномочий root:

ldd java

В нормальном мире результат этих двух был бы идентичен. То, как они различаются, должно многое рассказать о том, почему это не удается.

Insyte
источник
Боже, я установил LD_LIBRARY_PATH, я думал, что конф ldconfig будет бесплодным. ldd java возвращает относительный путь, содержащий «..» для libjli, я думаю, что это не сработало, поскольку упаковщики надеялись на этот конкретный клиент FCS Java 1.6.0 update 16.
Joeforker