В чем причина несогласованности UnsatisfiedLinkError при попытке загрузить файл .so через JNA? - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь загрузить файл .so, указав его абсолютный путь к API Native.loadLibrary. Это работает, но иногда я получаю UnsatisfiedLinkError, по которой я не могу найти причину. Может кто-то помочь мне с этим ?

Среда: CentOS 7.4 ImageMagick-7.0.1-2 OpenJDK: 1.8.0_162

Я установил путь к файлу общего объекта в -Djna.library.path, -Djava.library.path и LD_LIBRARY_PATH. У меня есть класс действия, который вызывает этот метод из .so файла через интерфейс Java.

Код в классе действия:

synchronized (InterfaceforSO .class) {
    InterfaceforSO.compressImage(oldPath,newPath);                                
}

Код в классе интерфейса для загрузки библиотеки:

public interface InterfaceforSO extends Library {
     InterfaceforSO INSTANCE = (InterfaceforSO)Native.loadLibrary(<absolute_path_of_.so_file>,InterfaceforSO.class);
     void compressImage(String path, String newPath);
}

Native.loadLibrary генерирует исключение время от времени . Частота отказов составляет 3/5. Исключение составляет:

java.lang.UnsatisfiedLinkError: Unable to load library '<absolute_path_of_.so_file>': Native library (<absolute_path_of_.so_file>) not found in resource path ([file:/transltr/imgmagic/WEB-INF/classes/, file: <...... jars present in the WEB-INF/lib directory>.

P.S .: Я поместил файл .so в каталог / transtr / imgmagic / WEB-INF / classes /.

Может ли кто-нибудь помочь мне с этим?

...