flyway遇到的问题Caused by: java.lang.ClassNotFoundException: org.flywaydb.core.api.callback.FlywayCallbac

问题

环境是springboot2.1.8+flyway6.0.4,尝试编译出错,异常堆栈的信息是找不到flywaycallback类

解决过程

1、flywaycallback找不到,导致org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration这个bean创建失败

FlywayAutoConfiguration类中找不到FlywayCallback类,实际上是FlywayConfiguration中FlywayCallback找不到,导致创建FlywayConfiguration失败。

2、找到FlywayCallback的import代码

3、找到FlywayCallBack所在的jar包中,到org.flywaydb.core.api.callback路径下确认是否有FlywayCallBack

结论

springboot2.1.8中org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration找不到flyway6.0.4中的FlywayCallback类

即flyway6.0.4将FlywayAutoConfiguration依赖的FlywayCallback干掉了,最终肯定找不到FlywayCallback类。

将flyway的版本降到5.2.4就ok了

思考

java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError错误的时候,需要一步步分析问题,方可解决问题

你可能感兴趣的:(java)