问题
环境是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错误的时候,需要一步步分析问题,方可解决问题