问题说明
项目背景:项目启动的时候,通过System.loadLibrary("XXX")加载so库文件。
问题场景:tomcat启动的时候,localhost.log文件报错,java.lang.UnsatisfiedLinkError:no XXX in java.library.path。
问题分析:通过报错信息定位到项目启动的时候加载不到so库文件,so库文件放在jdk/jre/lib目录下面,考虑so库文件所在的目录没有设置到java.library.path路径下面。
什么是java.library.path
PATH:是系统环境变量,声明命令搜索的路径,让操作系统找到指定的工具程序;
-classpath:Java执行环境找到指定的Java程序对应的class文件以及程序中引用的其他class文件;
-Djava.library.path:指定非Java类包的位置(如:dll,so等)。
如何配置java.library.path
在Windows系统中,通过环境变量进行设置,Linux系统中,通过修改环境变量文件,并且要在修改之后source环境变量文件使之生效,source之后,需要断开shell并重新连接之后进行服务启动操作。
Java8之前版本配置
Windows:PATH
Linux:LD_LIBRARY_PATH
Mac:DYLD_LIBRARY_PATH
Java8之后版本配置
Windows:PATH
Linux:LD_LIBRARY_PATH
Mac:JAVA_LIBRARY_PATH
在类unix系统中设置环境变量的例子:
```
#vi /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/java/jre/lib
#source /etc/profile
```
可以通过命令 #echo $LD_LIBRARY_PATH 查看设置之后的值。
网友评论