Я пытаюсь работать со сторонним SDK на RHEL. Выполнение примера кода этого поставщика (с использованием собственного предоставленного файла run.sh) выдает то, что я назову Ошибка 1: java.lang.UnsatisfiedLinkError: Unable to load library 'redacted': Native library (linux-x86-64/libredacted.so) not found in resource path
. Я добавляю местоположение библиотеки в путь к классу, и эта ошибка исчезает.
Он заменен ошибкой 2: Java.lang.UnsatisfiedLinkError: libodbc.so: cannot open shared object file: No such file or directory
, где мне явно не хватает зависимости. Я устанавливаю соответствующий пакет MySQL (который помещает .so в / lib64), и он счастлив.
Теперь оба .so файла находятся в / lib64, который находится по пути к библиотеке Java, поэтому я предполагаю, что он должен найти их одинаково. Даже указание LD_LIBRARY_PATH
на библиотеку (что поставщик сделал в своем скрипте) не разрешает ошибку 1.
Почему первая библиотека должна быть в пути к классам, когда Java использует java.library.path для поиска общих объектов?
Стоит отметить, что скрипт поставщика не работает правильно из коробки, что заставляет меня задуматься, не связана ли это с моей конкретной установкой RHEL.