0
我的Java應用程序使用JNI來訪問一些C++本機代碼。我需要特別是這個庫symbolic_graph_jni(由我寫的),需要glog(谷歌)。我確認libsymbolic_graph_jni.so取決於libglog.so.0。下面是依賴於LDD結構:-Djava.library.path woes
|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頁面找到libsymbolic_graph_jni.so,但是沒有找到該頁面依賴的glog.so.0,,它位於同一個目錄中!
什麼給?我有一個目錄中的所有共享庫,我需要做什麼才能讓Java類加載器找到它們?
java.library.path看起來像一個Java屬性。那麼爲什麼你認爲這個設置對使用系統路徑查找本地庫的ldd工具有影響? – GhostCat
@GhostCat - 我改述了 - 我只用ldd來查找依賴關係。問題在於我的Java應用程序找不到glog,儘管它找到了libsymbolic_graph_jni。 – Frank
如何在你的java應用程序中調用/加載libsymbolic_graph_jni.so,可以在這裏粘貼代碼 – kuhajeyan