背景
在开发过程中,可能需要使用第三方库,而这些库的源码可能是C写的,这时候会在java这边定义成native文件,程序运行的时候,链接到指定的dll文件。
dll文件生效
windows
windows环境下,会默认去 java.library.path
下找dll文件,我们可以通过System.getProperty("java.library.path")
查看所有路径信息。通过System.loadLibrary("lpsolve55j");
查看是否配置成功。
注: lpsolve55j.dll只需要写文件名,不需要写全路径和后缀。
linux
方式一
将libxxx.so添加到默认的库目录下/usr/lib
或/lib
下就ok了。在java程序中加载这个so文件时,linux会默认在文件头加上lib,比如System.loadLibrary("lpsolve55j");
,系统最终会加载liblpsolve55j.so文件。但是这种方式每次使用新的dll文件都需要运维帮忙部署。
最后不用忘记Idconfig
一下, 这是一个动态链接库管理命令,目的为了让动态链接库为系统所共享。
方式二
和方式一道理是一样的,只是我们不将libxxx.so
放到/usr/lib
或/lib
下,而是放在java工程resources下/META-INF/native
中。然后往export里写一个全局变量LD_LIBRARY_PATH
,指向这个目录,这样运维只需要配置一次linux环境即可,后续可以自己完成部署。
最后记得Idconfig一下!