背景
linux服务器上通过jar包部署服务,用到了第三方的动态库
问题
libjnipureSecApi.so: libsoft.so: cannotCausedjava.lang.Unsatisfiopen shared object file
原因:
在启动脚本中添加了环境变量-Djava.library.path=/usr/lib/ccb/,代码中打印时显示环境变量生效了,但是实际并没有生效,导致读取异常。
解决:
1、将.so动态库放入指定路径下,如:/usr/lib/ccb/
2、设置环境变量
export LD_LIBRARY_PATH=/usr/lib/ccb/:$LD_LIBRARY_PATH
3、保存环境变量
source ~/.bashrc
补充:
动态库加载方式
System.loadLibrary(“jniPureSecApi”);
现场测试时,遇到动态库加载失败的异常信息没有打印出来,可以将加载动态库代码放在启动类main函数内,使用try–catch捕获异常