Я пытаюсь загрузить файл .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 /.
Может ли кто-нибудь помочь мне с этим?