Linux环境执行Java Sikuli脚本抛出UnsatisfiedLinkError错误如何解决?
报错根因说明
核心崩溃触发点为最后一行的本地链接错误:
java.lang.UnsatisfiedLinkError: org.opencv.imgproc.Imgproc.matchTemplate_1(JJJI)V
该错误是Sikuli依赖的OpenCV图像识别本地库缺失、版本不匹配或Java运行时无法加载导致的,前面的Firefox相关日志为Selenium启动浏览器的常规警告,与本次崩溃无关。
排查与解决步骤
- 第一步:安装匹配版本的OpenCV系统依赖
Sikuli不同版本对应OpenCV版本要求不同:SikuliX 1.1.x系列需要OpenCV 3.x版本,SikuliX 2.x系列需要OpenCV 4.x版本,版本不匹配会直接触发链接错误。- Debian/Ubuntu发行版执行安装命令:
sudo apt install libopencv-imgproc libopencv-core - RHEL/CentOS/Fedora发行版执行安装命令:
sudo yum install opencv opencv-devel
- Debian/Ubuntu发行版执行安装命令:
- 第二步:检查Java本地库加载路径配置
执行以下命令查看Java默认本地库搜索路径:java -XshowSettings:properties | grep java.library.path
确认OpenCV的Java绑定so文件(通常命名为libopencv_java3.so或libopencv_java4.so)存放在上述输出的路径中,如果不在,启动jar包时手动指定库路径即可:java -Djava.library.path=/your/opencv/so/file/path -jar SikluiTestingnonative.jar - 第三步:校验打包完整性
若你是自行编译打包的Sikuli脚本jar包,确认打包时已引入Sikuli对应的OpenCV Java绑定依赖,没有遗漏相关class;优先使用官方发布的SikuliX标准运行包,避免自行打包引入依赖缺失问题。 - 可选:修复Firefox相关警告
日志中的Marionette窗口最大化超时警告,可通过升级geckodriver到和当前Firefox版本匹配的版本解决,也可以在Selenium初始化逻辑中移除窗口最大化操作,规避超时。
内容的提问来源于stack exchange,提问作者Nagajyothi Kapuluru
相关产品推荐
相关产品推荐

