Spring Boot集成Liquibase 3.5.3启动报错:调用不存在的方法如何解决
问题根因
- 版本不兼容:你遇到的
NoSuchMethodError核心原因是当前Spring Boot版本内置的Liquibase自动配置类,和你手动指定的Liquibase 3.5.3版本不适配,自动配置里调用的方法在3.5.3版本的liquibase-core包中不存在。 - 版本不一致:你的pom.xml中liquibase-core依赖版本是3.5.3,但是liquibase-maven-plugin插件版本是3.4.1,二者版本不统一也会导致类加载、方法匹配冲突。
- 升级到3.10.0之后的新报错,大概率是两个原因:要么3.10.0仍然和你当前的Spring Boot版本不适配,要么是你插件配置中指定读取的配置文件名错误(你配置里写的是
application.yaml,但实际配置文件是application.yml),触发配置解析异常。
解决方案
- 优先采用Spring Boot官方适配的版本,直接删除pom.xml中
<liquibase-core.version>自定义属性,同时删除liquibase-core依赖里的<version>标签,Spring Boot会自动引入和当前版本完全兼容的Liquibase版本,避免手动指定版本带来的适配问题。 - 如果需要手动指定Liquibase版本,要保证liquibase-core依赖和liquibase-maven-plugin插件的版本完全一致,不要出现跨版本混用的情况。
- 修正Liquibase插件配置:将插件中
<propertyFile>的配置值改为你实际的配置文件名src/main/resources/application.yml,如果还是出现配置冲突,可以单独为Liquibase插件创建独立的liquibase.properties配置文件,避免和Spring Boot的配置规则冲突。 - 如果使用Liquibase 4.x以上版本,不需要额外调整MySQL 8.0驱动的配置,只要保证版本适配即可正常运行。
内容的提问来源于stack exchange,提问作者Clancinio
相关产品推荐
相关产品推荐

