JNI java 加载所以得到未定义的符号异常
JNI java load so and got undefined symbol Excetion
当我加载本地编译的so时,出现异常:
Caused by: java.lang.UnsatisfiedLinkError: /home/admin/libLprProcessor.so: /home/admin/libLprProcessor.so: undefined symbol: _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm
at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[?:1.8.0_91]
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) ~[?:1.8.0_91]
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824) ~[?:1.8.0_91]
at java.lang.Runtime.load0(Runtime.java:809) ~[?:1.8.0_91]
at java.lang.System.load(System.java:1086) ~[?:1.8.0_91]
(.so) 文件是共享对象,类似于 windows 中的 .dll 文件,供您通过 JNI 加载它们需要将它们放在 /lib 或 /usr/lib for linux in under system32 windows 中的文件夹。
程序从特定位置读取这些文件,因此您需要安装或将它们放在正确的位置。
您的图书馆 /home/admin/libLprProcessor.so
很可能与另一个图书馆 link 编辑 - 一个包含 _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm
.
的图书馆
您在这里没有几个选择:
link libLprProcessor.so
有了这个库,你就可以通过 -rpath
。这样,这个附加库将从 libLprProcessor.so
正确指向
将此库添加到 java.library.path
指向的位置
在开始你的 Java 代码之前,确保导出 LD_LIBRARY_PATH
这样它指向 libLprProcessor.so
使用的库
当我加载本地编译的so时,出现异常:
Caused by: java.lang.UnsatisfiedLinkError: /home/admin/libLprProcessor.so: /home/admin/libLprProcessor.so: undefined symbol: _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm
at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[?:1.8.0_91]
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) ~[?:1.8.0_91]
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824) ~[?:1.8.0_91]
at java.lang.Runtime.load0(Runtime.java:809) ~[?:1.8.0_91]
at java.lang.System.load(System.java:1086) ~[?:1.8.0_91]
(.so) 文件是共享对象,类似于 windows 中的 .dll 文件,供您通过 JNI 加载它们需要将它们放在 /lib 或 /usr/lib for linux in under system32 windows 中的文件夹。 程序从特定位置读取这些文件,因此您需要安装或将它们放在正确的位置。
您的图书馆 /home/admin/libLprProcessor.so
很可能与另一个图书馆 link 编辑 - 一个包含 _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm
.
您在这里没有几个选择:
link
libLprProcessor.so
有了这个库,你就可以通过-rpath
。这样,这个附加库将从libLprProcessor.so
正确指向
将此库添加到
java.library.path
指向的位置
在开始你的 Java 代码之前,确保导出
使用的库LD_LIBRARY_PATH
这样它指向libLprProcessor.so