• 引入依赖时,右键能点击进入,运行时报错


    一、问题

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

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

    <dependency>
    	<groupId>com.aliyun</groupId>
    	<artifactId>ocr20191230</artifactId>
    	<version>1.0.19</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    <dependency>
    	<groupId>com.aliyun</groupId>
    	<artifactId>facebody20191230</artifactId>
    	<version>5.0.1</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    二、解决问题的过程

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

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

    在这里插入图片描述

    看日志是没有“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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    在这里插入图片描述

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

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

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

    在这里插入图片描述

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

    我原来的文字识别依赖的版本是“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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    TCP延迟应答和捎带应答及“粘包问题“和TCP异常
    CREO:CREO软件之工程图【创建】以及配置(符合国家标准)的简介及其使用方法(图文教程)之详细攻略
    RBA责任商业联盟行为准则
    栈和队列(8.4)
    Java项目:39 springboot007大学生租房平台的设计与实现
    高博基于stereo-imu的VO运行尝鲜
    前缀和实例3(和为k的子数组)
    解决风控模型的过拟合与算法高效求解,来试试这种经典解决方法
    Qt开发:一个自定义的QMessageBox,实现定时自动关闭窗口的功能
    【Android】-- 向上个和下个Activity页面发送数据
  • 原文地址:https://blog.csdn.net/studio_1/article/details/134273292