背景
最近加入了一个项目,项目是基于springboot2.0+mybatis的,从git上拉下项目之后一直启动失败。
问题报错原因一直显示为
关于Error creating bean with name 'sqlSessionFactory' defined in class path resource 报错,提示sqlSessionFactory创建失败,而且原因是构造函数报空指针异常
排查流程
最开始怀疑项目本身存在问题,于是按照sqlSessionFactory创建失败的方向排查,网上大多数解决方案说可以错误日志提示问题一样,说是项目中缺少sqlSessionFactory的bean生成,利用注解的方式将sqlSessionFactory加入spring容器中依旧存在问题。也参考了之前其他项目,发现其他项目并没有单独配置,项目也能正常启动,也就排除了这个项目启动问题。
后来也让周围的同事启动了一下,但是人家可以启动,怀疑可能不是项目问题,是自己环境配置有问题。但是别的项目使用我本地环境也能正常启动,所以考虑可能是项目本身也存在某些问题,在网上查找一些内容,怀疑jar包也存在问题。idea中利用maven helper插件查看发现很多jar包均存在冲突,解决包冲突后,重新启动,后来发现项目可以正常启动。介于刚只是简单排除jar,所以讲项目暂停后重新整理排除jar以及引入的jar后,重新启动项目发现其他错误。从maven的使用角度来说,整理不会有这样的问题存在,表示怀疑了人生!!!尝试重新启动,项目竟然能启动成功,感觉像灵异了一样,后来反复尝试有时可以有时不行,中元节的晚上好恐怖的。。。也一直在想我的环境和其他同事能有什么不同?加上偶尔可以偶尔不行,注意到idea上的jrebel启动插件,于是分别尝试使用和不使用,确实问题就在这!正常的debug项目可以启动,jrebel的debug项目启动不了,猜测可能是jrebel插件问题。
解决方案
谷歌之后发现jrebel插件和springboot2.0存在不兼容的问题,造成springboot2.0的项目可能启动不成功!觉得好坑。。。之后升级jrebel到最新版7.X,使用jrebel启动成功,一个黑暗的夜晚,解决了困扰了半天的问题!!!
总结
这种公司的项目尤其是已经有人在开发的这种,不要轻易怀疑项目问题,多从自己的环境各方面找找原因,细心观察+方向正确才是解决问题的真理。行业水太深,还是不断攀升,努力吧。