参考:

https://stackoverflow.com/questions/1403788/java-lang-unsatisfiedlinkerror-no-dll-in-java-library-path

https://www.cnblogs.com/eason-d/p/12401371.html

首先需要保证使用带有传统libc库的系统

system.loadxxx的用法

System.loadLibrary(“HelloWorld”);这句话是在执行java代码之前加载动态库
System.load 参数必须为库文件的绝对全路径,可以是任意路径
System.loadLibrary 参数为库文件名,不需要写库文件的扩展名, 注意:如果是linux系统库文件名需要以lib开头, 然后作为参数需要去掉lib

例子(一般放在static代码块做加载,确保仅执行一次):

1
2
3
4
5
6
7
System.load("/user/src/app/lib/hello.dll"); // Load native library at runtime
System.loadLibrary("hello"); // Load native library at runtime

如果是windows(
一般.so对应linux,.dll对应windows,
hello.dll (Windows) or libhello.so(linux)
)
  1. 将文件放在/user/src/app/下
  1. Linux 运行jar文件配置lib库地址

主要是这句-Djava.library.path=/user/src/app/lib

1
nohup java -Dfile.encoding=utf-8 -Djava.library.path=/user/src/app/lib -jar picture-server.jar >nohup.log 2>&1 &

此时运行会提示错误: cannot open shared object file: No such file or directory

  1. 把新加载的lib目录 加入到共享库配置文件/etc/ld.so.conf 中
1
2
3
4
5
6
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf


echo "/user/src/app/lib" >> /etc/ld.so.conf
ldconfig # 刷新的作用