使用Liquibase 4.18.0与Spring Boot 3.0.1生成Diff脚本报错求助
Liquibase 4.18.0 + Spring Boot 3.0.1 API不兼容问题解决办法
这个错误的核心原因很明确:Spring Boot 3.0.x全量切换到了Jakarta EE规范,所有JPA相关API的包名从javax.persistence改为jakarta.persistence;而Liquibase 4.18.0的代码仍依赖旧的javax.persistence.spi.PersistenceUnitInfo接口,和Spring Boot 3返回的jakarta.persistence.spi.PersistenceUnitInfo不匹配,导致NoSuchMethodError。
解决办法
优先方案:升级Liquibase到适配版本
Liquibase从4.20.0版本开始正式支持Jakarta EE API(包括Spring Boot 3),直接升级到4.20.0或更高的稳定版本就能彻底解决这个兼容性问题。
以Maven为例,修改依赖版本:<dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.20.0</version> <!-- 可替换为最新稳定版 --> </dependency>临时应急方案(不推荐长期使用)
如果暂时无法升级Liquibase,可尝试手动排除Liquibase依赖中的javax.persistence-api,并引入Jakarta API的桥接依赖,但这种方式可能引发其他潜在兼容性问题,仅作为短期应急手段。
总结
不需要等待新的Liquibase版本,官方已经在4.20.0及以上版本完成了Spring Boot 3的适配,升级版本是最稳妥的解决方式。
内容的提问来源于stack exchange,提问作者wutzebaer
相关产品推荐
相关产品推荐

