钉钉开发 Stream 模式推送服务端接口的调用,会用到app-stream-client这个依赖,这个jar包依赖了fastjson2,但是我项目依赖的其他jar包依赖的是
fastjson其他的版本,这样在钉钉回调时,会报java.lang.LinkageError: com/alibaba/fastjson2/JSONObject?
遇到此类java.lang.LinkageError问题,通常是由于项目中存在Fastjson库的多个不同版本,导致JVM在加载类时出现冲突。为了解决这个问题,你可以尝试以下几种方法:1. 排除依赖冲突:在引入app-stream-client依赖时,可以尝试排除其自带的Fastjson2依赖,然后在你的项目中统一管理Fastjson的版本。以Maven为例,可以在pom.xml文件中添加如下配置排除冲突:
your.group.id
app-stream-client
your.version
com.alibaba
fastjson2
markup接着,手动添加你项目需要的Fastjson版本,确保整个项目中只有一份Fastjson库。1. 统一版本:如果你的项目中其他依赖确实需要使用Fastjson的不同版本,但这些版本之间兼容性良好,可以尝试通过 来强制指定所有Fastjson依赖为同一版本。2. 类加载器隔离:如果上述方法不适用,考虑使用类加载器隔离技术(如OSGi框架、Spring Boot的@ConditionalOnClass等)来确保不同模块加载各自所需的Fastjson版本,但这通常较为复杂,且可能会引入更多维护问题。3. 升级或降级:检查Fastjson是否有新版本解决了兼容性问题,或者评估是否可以将所有依赖统一降级到一个稳定的版本上。请注意,具体操作时应依据你项目的实际情况和依赖管理工具(如Maven、Gradle)的语法进行调整。 ,此回答整理自钉群“钉钉开发者社区(互助群)”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。