You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 2.7.8升级后部署失败:java.lang.VerifyError求助

问题排查与解决方案

核心原因分析

java.lang.VerifyError: Bad return type 本质是字节码验证失败,这里的JsonFactory无法转换为TokenStreamFactory,大概率是Jackson版本冲突导致:

  • Spring Boot 2.7.8默认绑定Jackson 2.13.5版本,JsonFactory在该版本中实现了TokenStreamFactory接口
  • 如果项目中存在其他依赖(比如Kafka的kafka-clients)引入了更低版本的Jackson,会导致类加载时出现接口实现不匹配的问题

具体解决步骤

1. 排查依赖冲突

执行Gradle命令查看Jackson相关依赖的版本分布:

./gradlew dependencies --configuration compileClasspath | grep com.fasterxml.jackson

重点关注是否有非2.13.x版本的Jackson,尤其是kafka-clients或其他第三方依赖引入的旧版本。

2. 强制统一Jackson版本

不要直接排除所有Jackson依赖(Spring Boot核心组件依赖Jackson,全排除会引发更多问题),在build.gradle中添加强制版本配置:

configurations.all {
    resolutionStrategy.force 'com.fasterxml.jackson.core:jackson-core:2.13.5'
    resolutionStrategy.force 'com.fasterxml.jackson.core:jackson-databind:2.13.5.2'
    resolutionStrategy.force 'com.fasterxml.jackson.core:jackson-annotations:2.13.5'
}

3. 确保Kafka依赖适配Spring Boot版本

使用Spring Boot提供的spring-boot-starter-kafka而非直接引入kafka-clients,让Spring Boot自动管理Kafka相关依赖版本:

implementation 'org.springframework.boot:spring-boot-starter-kafka'

如果必须直接引入kafka-clients,要确保其版本与spring-kafka兼容(Spring Boot 2.7.8对应spring-kafka 2.8.10,适配kafka-clients 3.1.2版本)。

4. 清理构建缓存并重新构建

执行以下命令清理旧的构建缓存,避免残留的旧字节码干扰:

./gradlew clean build

5. 检查自定义Jackson代码

如果项目中有自定义的JsonFactory子类或Jackson配置,确认是否存在方法签名不兼容的情况(比如重写的方法返回类型与新版本Jackson不匹配)。

内容的提问来源于stack exchange,提问作者stevriss22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:57:20