引入依赖时,对应类能点击进入,运行时报错

一、问题

我的问题是这样的:以前引入了阿里云文字识别的依赖,最近要调用视频活体检测的接口,引入相关依赖后,在测试调用的时候竟然报错了,还是阿里云依赖包里的错误。

原来引入的文字识别依赖的版本是“1.0.19”的

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>ocr20191230</artifactId>
	<version>1.0.19</version>
</dependency>

新引入的视频活体检测依赖的版本是“5.0.1”的

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>facebody20191230</artifactId>
	<version>5.0.1</version>
</dependency>

二、解决问题的过程

在调用视频活体检测时报错如下:

Exception in thread "main" java.lang.NoSuchMethodError: com.aliyun.openplatform20191219.Client.<init>(Lcom/aliyun/teaopenapi/models/Config;)V

在这里插入图片描述

看日志是没有“com.aliyun.openplatform20191219.Client”的构造器方法,心里纳闷,阿里那么多大佬,不至于犯这么低级的错误啊。我尾随报错的信息点进去,确实有这个构造器方法

在这里插入图片描述

再调用一下以前的文字识别的接口,能正常调用。

实在想不明白,就加了钉钉的群,问了一下阿里的技术人员,他说他那边是能正常调用的,可能是依赖冲突的问题。

于是我打开视频活体检测的依赖(左边),对比文字识别依赖(右边)

在这里插入图片描述

可以发现“com.aliyun.openplatform20191219.Client”这个类存在于两个依赖中,并且版本不一致!!!

于是就想把其中一个依赖的“com.aliyun.openplatform20191219”排除掉,本着高版本兼容低版本的原则,排除了文字识别中的对应依赖。

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>ocr20191230</artifactId>
	<version>1.0.19</version>
	<exclusions>
		<exclusion>
			<groupId>com.aliyun</groupId>
			<artifactId>openplatform20191219</artifactId>
		</exclusion>
	</exclusions>
</dependency>

刷新依赖,确定这个包确实被排除了

在这里插入图片描述

其实还有共同的依赖,但是没有报那个包的错,这里先不管先。

但是排除后,再次调用视频活体检测接口,成功。

看看文字识别的接口是不是也能调用成功,很遗憾,轮到文字识别的接口报这个错了。

在这里插入图片描述

然后就想着试试升级一下文字识别接口的依赖,让共同包的版本一致,看看能不能解决。

我原来的文字识别依赖的版本是“1.0.19”的,观察发现“2.0.0”的,跟“5.0.1”版本的视频活体检测依赖是一致的。

在这里插入图片描述

行,就用这个版本的依赖试试。

结果两边都调用成功了。

三、解决方式

1、排除其中一个依赖的公共包

这个解决办法仅限被排除的包没有被使用。

比如我排除了文字识别中的“com.aliyun.openplatform20191219”包,排除之后视频活体检测检测能正常调用,但原来的文字识别也还要用,这时调用就会报错。

2、升级旧依赖

以前引入的依赖与新引入的依赖中存在共同包,并且版本不一致,将旧依赖升级,选择和新依赖版本共同包版本一致的依赖。

我引入的是阿里云的文字识别依赖和视频活体检测依赖,这是能兼容的的两个版本

<!-- https://mvnrepository.com/artifact/com.aliyun/ocr20191230 -->
<!--阿里云文字识别的相关依赖-->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>ocr20191230</artifactId>
    <version>2.0.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.aliyun/facebody20191230 -->
<!--阿里云视频活体检测的相关依赖-->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>facebody20191230</artifactId>
    <version>5.0.1</version>
</dependency>
### OpenCV运行报错的常见解决方案 #### 一、命名空间冲突问题 当在项目中同引入`opencv`库和`windows.h`头文件,可能会发生命名空间冲突。这是因为`opencv`中的`namespace cv`与`windows.h`中定义的`ACCESS_MASK`存在重名现象[^1]。 解决方法是在代码中显式指定命名空间,或者调整头文件加载顺序,优先加载`windows.h`后再加载`opencv`相关头文件。 ```cpp #include <windows.h> #include <opencv2/opencv.hpp> int main() { using namespace cv; Mat image = imread("example.jpg"); imshow("Image", image); waitKey(0); return 0; } ``` --- #### 二、缺少必要的依赖文件 如果编译器提示找不到`opencv2/opencv.hpp`或其他核心头文件,则说明开发环境未正确配置。通常可以通过以下方式解决: - 将`opencv2`目录链接至系统的默认`include`路径下[^2]。 - 使用命令行工具完成软连接操作: ```bash sudo ln -s /usr/include/opencv4/opencv2 /usr/include/ ``` 对于某些特定场景(如自定义安装路径),可能还需要额外设置: ```bash sudo ln -s /usr/local/include/opencv4/opencv2 /usr/local/include/ ``` --- #### 三、动态链接失败 如果程序能够成功编译但无法生成最终可执行文件,通常是由于`g++`命令参数错误引起的。正确的链接方式如下所示: ```bash g++ webcam.o -o webcam ``` 注意:切勿颠倒目标文件(`webcam`)的位置,否则会触发`no input files`错误。 --- #### 四、版本兼容性问题 部分功能调用异常可能是由不同版本间的API差异引起。例如,在使用`findContours`函数发现报错,这很可能是因Visual Studio (VS) 和 OpenCV 版本不匹配所致[^3]。建议尝试升级或降级OpenCV版本来适配当前IDE环境。 --- #### 五、调试模式下的特殊处理 针对Qt Creator环境下Debug模式运行OpenCV4出现的问题,有报告指出这是由于Release版缺失`cv::debug_build_guard`所引发[^5]。对此情况推荐重新构建整个工程并确保所有组件均处于一致的状态——即要么全部启用Debug选项,要么统一切换成Release状态。 --- ### 总结 以上列举了几种常见的OpenCV运行期故障及其对应的修复措施。实际应用过程中还需结合具体表现形式逐一排查根本原因。务必确认系统已妥善部署所需软件包,并遵循官方文档指导完成初始化设定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值