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

x86-64 Ubuntu22.04虚拟机运行Jar时遇OpenCV UnsatisfiedLinkError

x86_64 Ubuntu 22.04 运行OpenPnP OpenCV项目报错的解决方法

排查方向与修复步骤

1. 检查/tmp目录挂载属性

Ubuntu虚拟机的/tmp可能被设置了noexec挂载属性,导致无法加载共享库:

  • 执行命令查看挂载属性:
    mount | grep /tmp
    
  • 如果输出包含noexec,临时修改挂载权限:
    sudo mount -o remount,rw,exec /tmp
    
  • 永久修复:编辑/etc/fstab文件,找到/tmp对应的挂载行,移除noexec参数,执行sudo mount -o remount /tmp生效

2. 重置Maven依赖缓存

本地Maven仓库中的OpenPnP OpenCV包可能存在损坏:

  • 删除本地缓存目录:
    rm -rf ~/.m2/repository/org/openpnp/opencv/4.7.0-0
    
  • 重新构建项目,让Maven重新下载完整的依赖包

3. 补充系统级依赖库

OpenCV的Java绑定依赖系统底层的C++库,Ubuntu可能缺少相关组件:

  • 安装OpenCV系统依赖:
    sudo apt update && sudo apt install libopencv-dev libopencv-core4.5d libopencv-imgproc4.5d
    
  • 用ldd命令检查缺失的依赖:
    ldd /tmp/opencv_openpnp12784852236417917500/nu/pattern/opencv/linux/x86_64/libopencv_java470.so
    

根据输出安装对应的缺失库

4. 调整临时目录配置

/tmp空间不足或权限问题可通过指定自定义临时目录解决:

  • 检查/tmp剩余空间:
    df -h /tmp
    
  • 启动Java程序时指定临时目录(替换为你有权限的目录):
    java -Djava.io.tmpdir=/opt/my-tmp -jar your-app.jar
    

5. 替换加载方式

尝试绕过OpenCV.loadLocally(),手动加载库文件:

// 先加载本地编译或下载的libopencv_java470.so
System.load("/opt/opencv/lib/libopencv_java470.so");
// 初始化OpenCV
org.opencv.core.Core.init();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:52:50