繁体   English   中英

-Djava.library.path困扰

[英]-Djava.library.path woes

我的Java应用程序使用JNI来访问某些C ++本机代码。 我特别需要这个库symbolic_graph_jni (由我编写),它需要glog(来自谷歌)。 我确认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 set,我的Java pp找到了libsymbolic_graph_jni.so,但找不到lib所依赖的glog.so.0, 并且它位于同一目录中!

是什么赋予了? 我在dir中拥有所有共享库,我需要做些什么才能让Java类加载器找到它们?

尝试启动你的java应用程序(假设你在Linux上):

1) export LD_LIBRARY_PATH=<path-containing-so's> (见这里

2) java MainClass

-D属性仅影响JVM查找本机库的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM