比如使用JNA时需要动态加载 libsgd.so,使用Native.load(“sgd”,FmSGDLibrary.class) 时总是会报   Can’t obtain InputStream for linux-x86-64/libsgd.so 的错误,虽然通过设置环境变量可以解决问题  :

#/tmp/lib/ 是so文件所在路径,自由调整
export LD_LIBRARY_PATH=/tmp/lib/:$LD_LIBRARY_PATH

但是这个方式也太不灵活了,能不能只通过java代码就能动态加载动态链接库呢?

答案是有的,通过Native.loadlibrary使用绝对路径加载就行了。

Native.loadLibrary("/tmp/lib/libsgd.so", FmSGDLibrary.class);