java — -Djava.library.path горе

Мое Java-приложение использует JNI для доступа к некоторому нативному коду C ++. Мне нужна именно эта библиотека symbolic_graph_jni (написано мной), который нуждается в Glog (от Google). Я подтвердил, что libsymbolic_graph_jni.so зависит от libglog.so.0. Вот структура зависимостей в ldd:

|1276|lib>ldd libsymbolic_graph_jni.so
....
libcommon.so => not found
libstorage.so => not found
libdatabase.so => not found
linux-vdso.so.1 =>  (0x00007fff9d5ff000)
libglog.so.0 => not found
....

в моем приложении Java, хотя я установил:

-Djava.library.path=~/myproduct/build/impl/libs

и этот каталог содержит:

-rwxr-xr-x 1 mldv eng    18389 Aug  9 08:54 libboost_system.so.1.58.0
-rwxr-xr-x 1 mldv eng  3141033 Aug  9 08:54 libcommon.so
-rwxr-xr-x 1 mldv eng 47034505 Aug  9 08:54 libdatabase.so
-rw-r--r-- 1 mldv eng   528031 Aug  9 08:54 libgcc_s.so.1
-rwxrwxrwx 1 mldv eng  1451910 Aug  9 08:54 libgflags.so.2
-rwxrwxrwx 1 mldv eng   873073 Aug  9 08:54 libglog.so.0
-rwxrwxrwx 1 mldv eng  6520243 Aug  9 08:54 libstdc++.so.6
-rwxr-xr-x 1 mldv eng  8060525 Aug  9 08:54 libstorage.so
-rwxr-xr-x 1 mldv eng  1818771 Aug  9 08:54 libsymbolic_graph_jni.so
-rwxr-xr-x 1 mldv eng   154808 Aug  9 08:54 libutil.so

Я всегда получаю:

java.lang.UnsatisfiedLinkError: ~/myproduct/build/impl/libs/libsymbolic_graph_jni.so: libglog.so.0: cannot open shared object file: No such file or directory

Другими словами, с установленным параметром -Djava.library.path, мой Java pp находит libsymbolic_graph_jni.so, но не может найти glog.so.0, от которого зависит эта библиотека, и который находится в том же каталоге!

Что дает? У меня есть все общие библиотеки в директории, что мне нужно сделать, чтобы загрузчик классов Java нашел их?

1

Решение

Попробуйте начать свой java приложение (если вы работаете в Linux):

1) export LD_LIBRARY_PATH=<path-containing-so's> (увидеть Вот.

2) java MainClass

Свойство -D влияет только на то, где JVM ищет собственные библиотеки.

0

Другие решения

Других решений пока нет …