背景
由于公司业务需要,需要对聊天的信息和发布的动态信息进行敏感词校验,选用了是华为云的文本内容审核组件。
起因
当时我这边有个需求,需要对华为云的敏感词组件进行切换,由于我是后来接受这个项目,所以找了同事大概了解了一下情况,就是将http的方式改为sdk的调用方式,听同事说本来就是用的sdk方式调用,但由于上线上环境一直会报错,当时情况可能时间时间紧,任务重,就换成了http的方式,但是这里有个问题就是token失效的问题(这里不做具体说明了),如果换成sdk就不会有这种问题了,于是就开始准备定位分析问题了。
过程
定位问题
准备工作,引入sdk,代码开发,本地调试都完成了,准备打包发布到测试环境,说来也奇怪,一般本地环境正常的,测试环境应该也正常,奇怪就奇怪在这里,测试环境的包打完了,发布测试环境通过日志我发现一直在报一个错,导致项目启不来,错误日志如下:
分析日志之后,应该是依赖冲突造成的,通过idea插件Dependency Analyzer,发现jackon确实存在冲突。
解决方案
问题定位好之后,就是将华为sdk关于jackson所有的依赖都排除掉。
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-core</artifactId>
<version>3.1.21</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-moderation</artifactId>
<version>3.1.21</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</exclusion>
</exclusions>
</dependency>
结果
测试环境正常启动,以上是最终的版本,之前经过了多种方法的尝试,当最后成功运行的那刻,还是比较有成就感的,也有所收获。
总结
以上是我个人对这个问题的解决思路,希望能够帮助到遇到此类问题的朋友,如有不对的地方,还请大家多多指教。2023年新年将近,提前祝大家新年快乐,工作顺利,家庭幸福!