IntelliJ2022.1.1社区版非模块化JavaFX导入OpenCV报错解决
Gradle构建JavaFX项目OpenCV依赖识别失败、手动添加库自动消失解决方法
问题根因
Gradle项目的所有依赖由build.gradle配置统一管控,直接在IDEA的项目结构里手动添加Global Library、给模块挂依赖的操作,只要触发Gradle同步就会被配置直接覆盖,这就是你反复添加OpenCV库又自动消失的原因,后续不用再手动改IDEA内的依赖配置,所有依赖统一走Gradle声明即可。
你之前参考教程在build.gradle里加依赖同步失败,大概率是用了OpenCV官方的依赖坐标——官方并没有把安装包上传到Maven中央仓库,直接写坐标是拉不到对应jar包的。
操作步骤
- 清理无效配置
按Ctrl+Alt+Shift+S打开项目结构,把Global Libraries里手动添加的OpenCV条目删掉,再切到Modules的Dependencies标签页,把手动加的OpenCV依赖也全部删除,点击应用保存配置。 - 修改build.gradle依赖配置
打开项目根目录下的build.gradle文件,找到dependencies代码块,保留原有JavaFX相关依赖,新增OpenCV依赖坐标:
这个是第三方维护、上传到Maven中央仓库的OpenCV分发包,已经打包了Windows x64平台需要的本地动态库,不用你单独配置dll路径。dependencies { // 原有JavaFX依赖不要动,比如javafx-fxml、javafx-controls这些 // 新增OpenCV依赖,适配Windows x64 4.6.0版本 implementation 'org.openpnp:opencv:4.6.0-0' } - 同步Gradle配置
点击IDEA右侧Gradle面板的刷新按钮,等待依赖拉取、同步完成,期间不要手动修改任何依赖相关配置。 - 运行兼容配置(编译通过但运行时报本地库错误时再加)
如果编译阶段已经不报错,启动时提示UnsatisfiedLinkError找不到本地库,两个方案二选一:- 在项目入口Main类的最开头加静态代码块,主动加载本地库:
static { nu.pattern.OpenCV.loadShared(); }- 打开IDEA的运行配置,找到你启动Main类的对应配置项,在VM options栏填入:
-Djava.library.path=build/install/DjikstraAlgo/lib
验证结果
同步完成后看External Libraries列表,会出现org.openpnp:opencv:4.6.0-0的依赖条目,直接触发构建就不会再出现package org.opencv.core does not exist的编译错误,之前反复消失的手动添加库问题也不会再出现。
内容的提问来源于stack exchange,提问作者Detective_Khalifah
相关产品推荐
相关产品推荐

