You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04装Java12后用OpenCV Jar报UnsatisfiedLinkError如何解决?

解决Ubuntu 18.04 + Java 12下OpenCV的UnsatisfiedLinkError问题

这个问题我之前帮朋友排查过,本质是Java虚拟机找不到OpenCV对应的本地共享库(.so文件),结合你的环境和代码,给你几个针对性的解决步骤:

第一步:定位OpenCV本地库文件

首先你得确认libopencv_java320.so这个文件在系统里的位置,打开终端执行以下命令搜索:

sudo find / -name libopencv_java320.so

找到后记下完整路径,比如常见的路径是/usr/local/share/OpenCV/java/libopencv_java320.so,或者你自己编译OpenCV时生成的build/lib/目录下。

第二步:让Java能找到这个库

有三种方法可以实现,选其中一种就行:

方法1:复制库文件到Java默认搜索路径

你的异常信息里显示Java会搜索/usr/lib/x86_64-linux-gnu/这个目录,直接把库文件复制过去:

sudo cp /path/to/libopencv_java320.so /usr/lib/x86_64-linux-gnu/

然后更新系统库缓存:

sudo ldconfig

方法2:运行程序时指定库路径

不用移动文件,运行Java程序时通过-Djava.library.path参数指定库所在的文件夹:

java -Djava.library.path=/path/to/your/opencv/library/folder Hello

比如你的库在/usr/local/share/OpenCV/java/,命令就是:

java -Djava.library.path=/usr/local/share/OpenCV/java/ Hello

方法3:设置环境变量(永久生效)

编辑用户的bash配置文件:

nano ~/.bashrc

在文件末尾添加一行(替换成你找到的库文件夹路径):

export LD_LIBRARY_PATH=/path/to/your/opencv/library/folder:$LD_LIBRARY_PATH

保存退出后,让配置生效:

source ~/.bashrc

之后再运行Java程序就不用每次指定路径了。

第三步:优化你的代码

注意你当前代码里同时调用了nu.pattern.OpenCV.loadShared()和System.loadLibrary(...),这两个功能重复了,保留其中一个即可,避免冲突:

public static void main(String[] args) {
    // 二选一即可,推荐用nu.pattern的方式,它会自动处理路径
    nu.pattern.OpenCV.loadShared();
    // 或者 System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);
}

做完以上步骤后,重新运行你的程序,应该就能正常加载OpenCV库了。

内容的提问来源于stack exchange,提问作者iamneaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:44:20