如何在Eclipse中将共享库文件添加至java.library.path路径
问题描述
我正在使用Ubuntu 20.04系统,运行的Eclipse版本为2019-12,JDK为OpenJDK 8(我的当前项目要求使用8版本)。该Java项目可以通过以下脚本正常执行:
我在Eclipse中操作时,想要给项目添加一个外部JAR文件,但始终抛出如下异常:
我已经尝试了以下操作:
添加包含所有共享库的原生库位置

上述位置包含文件libz3java.so。将相同的原生库位置添加到其他JAR也没有解决问题。通过VM arguments设置java.library.path

添加对应的环境变量

给共享库文件名添加"lib"前缀
这是唯一能让我得到另一种异常的操作,我将libz3java.so重命名为liblibz3java.so后得到如下异常:
libz3.so是同目录下的另一个共享库,给该库名称添加"lib"前缀也没有改变报错。
请问我该如何配置Eclipse,使其能够找到并读取缺失的共享库?
解决方案
首先将你重命名的共享库文件名恢复为原始名称,把liblibz3java.so改回libz3java.so,额外增加前缀会破坏JNI的默认库名查找规则。
按照以下步骤逐一排查配置即可解决问题:
- 确认Eclipse全局JRE配置与项目JRE一致:打开
窗口 > 偏好设置 > Java > 已安装的JRE,勾选项目使用的OpenJDK 8为默认JRE,选中后点击「编辑」,在「默认VM参数」栏填写-Djava.library.path=libz3java.so所在目录的绝对路径,不要使用相对路径。 - 调整项目运行配置:右键项目 > 运行方式 > 运行配置,找到当前项目对应的Java应用运行项,切换到「环境」标签页,新增变量
LD_LIBRARY_PATH,值为libz3java.so所在目录的绝对路径:$LD_LIBRARY_PATH,同时勾选「追加到原生环境」选项后保存。 - 验证架构匹配:打开终端进入so文件所在目录,执行
file libz3java.so,确认输出的架构与OpenJDK 8的架构一致,若二者分别为32位和64位也会提示找不到库。 - 刷新系统共享库缓存:如果以上操作都无效,在终端执行
sudo ldconfig libz3java.so所在目录的绝对路径,执行完成后重启Eclipse再运行项目。
内容的提问来源于stack exchange,提问作者Ketho
相关产品推荐
相关产品推荐

