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

执行Liquibase diffChangelog时遇Throwable转Exception类型转换异常求助

问题解决:Liquibase diffChangelog执行时ClassCastException异常

错误原因分析

这个java.lang.ClassCastException: java.lang.Throwable cannot be cast to java.lang.Exception异常是Liquibase内部日志处理逻辑的版本兼容性问题,核心原因是Liquibase核心、Hibernate扩展与Gradle插件版本不匹配,同时手动引入的picocli依赖与Liquibase内置版本冲突,导致类型转换错误。结合你使用Spring Boot 3.2.2(对应Hibernate 6.2.x)的环境,当前Liquibase 4.25.1版本存在适配缺陷。

具体解决方案

1. 升级Liquibase相关版本

将Liquibase生态的组件升级到兼容Spring Boot 3.2.x的版本:

  • Liquibase Gradle插件从2.2.1升级到2.2.2
  • Liquibase核心和Hibernate6扩展从4.25.1升级到4.27.0(该版本对Spring Boot 3.2兼容性更完善)

2. 移除冲突依赖

删除liquibaseRuntime 'info.picocli:picocli:4.7.5',Liquibase核心已内置适配的picocli版本,手动引入会引发版本冲突。

3. 修改后的关键配置片段

调整build.gradle的plugins和dependencies部分:

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.2'
    id 'io.spring.dependency-management' version '1.1.4'
    id 'org.liquibase.gradle' version '2.2.2' // 升级插件版本
}

dependencies {
    // ...其他依赖保持不变
    liquibaseRuntime 'org.liquibase:liquibase-core:4.27.0' // 升级核心版本
    liquibaseRuntime "org.liquibase.ext:liquibase-hibernate6:4.27.0" // 升级Hibernate扩展版本
    liquibaseRuntime sourceSets.main.runtimeClasspath
    liquibaseRuntime sourceSets.main.output
    liquibaseRuntime 'org.yaml:snakeyaml:2.0'
    liquibaseRuntime 'org.postgresql:postgresql'
}

验证步骤

  1. 清理Gradle缓存并刷新依赖:
./gradlew clean build --refresh-dependencies
  1. 重新执行diffChangelog命令:
./gradlew diffChangelog

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:33:16