问题背景:
java项目用到了C++的函数库,用命令行编译java源文件能正确加载第三方函数库依赖并成功运行。
java中的 第三方库 加载方法:
static {
System.loadLibrary("jbliss");
}
将项目导入IDE中运行,报错
executeException in thread “main” java.lang.UnsatisfiedLinkError: no 第三方库名称 in java.library.path
解决方法
经过检查java代码没有问题,用以下两种方法都能解决。
方法一:
修改Eclipse中Java项目的配置。项目名右键点击 Properties ,选中 Java Build Path ,在 Source 选项卡中点击 项目名称左侧下拉三角,选中 Native library location,点击右侧 Edit 设置它的路径为 第三方库所在的目录(一般为.so文件,或者jar包),应用并关闭。重新运行项目,问题解决。
方法二:
在报错前添加如下代码,打印java.library.path的路径:
// 打印 java.library.path 路径
System.out.println(System.getProperty("java.library.path"));
- 根据java.library.path路径,找出该路径在电脑中所在的实际位置。(可能有多个路径,Linux中用 " : " 隔开。Ubuntu一般为 usr/lib/ 目录)
- 将第三方库(我的为 .so文件)复制到该目录中。重新运行项目,问题解决。