Когда разделяемая библиотека должна быть в Java classpath? - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь работать со сторонним 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.

...