Я пытаюсь использовать скомпилированную библиотеку C++ в своем Java-коде. Я установил java.library.path
в /usr/local/lib/
, и у меня есть все файлы .so
для установленных там библиотек.Не удается открыть файл общих объектов - библиотека C++ в Java
Однако, когда я пытаюсь запустить приложение Java я вижу следующее:
Native code library failed to load.
java.lang.UnsatisfiedLinkError: /usr/local/lib/libA.so: libB.so.2.4: cannot open shared object file: No such file or directory
Однако файл, кажется, есть:
ls /usr/local/lib/libB.so.2.4
lrwxrwxrwx 1 root root 20 Jan 24 16:33 /usr/local/lib/libB.so.2.4 -> libB.so.2.4.5
него символьные ссылки на файл также существует. Любая идея, почему эта библиотека не может быть найдена?
Вы запустили 'sudo ldconfig'? –
@ ElliottFrisch только что попробовал. Это не помогло – Oleksi
Стоит проверить права доступа к файлам. Или вы можете использовать strace, чтобы увидеть, что он пытается сделать. Вы также можете проверить System.load() точное имя файла и посмотреть, не удалось ли/как это сделать, возможно, снова в режиме strace. –