2020.7.14
今天上午,一到公司,就开始研究springboot(或者应该叫springcloud?这两个启动类一样)项目无法启动的原因。
问题:
springboot项目跑不起来,还不报错,控制台只有debug与info标签,最后打印stopping service [Tomcat],退出参数有时候是0,有时候是1。
解决方法:
1.组长说他的项目能跑(他还没update),那就开始研究。
2.首先,update后大部分人的项目都不能启动,组长自己发现,update项目后,删掉resources/mapping/xxxMapper.xml这类文件就行,有四个文件,是其它小组用mybatis generator自动生成的(这个锅是其它组的了);
3.然而,我们删掉后,项目还是不能跑,springboot还是不报错,同时组长的update后仍能跑;
4.接着,比较组长与本人的项目代码,排除掉无关文件,发现xxxcontroller.java这个文件,组长update的不彻底(他自己有修改);
5.锁定了controller文件后,就开始检查代码,居然发现这其中有个样例方法的url与其它controller中的url相同;
6.删除掉那个多余的样例方法(同时也删掉其它组的xml文件),项目终于能跑了。
7.确认第二个锅谁背:当时这个controller是组长复制样例controller然后改的名字,在包含着同样的样例方法、同样的url的情况下就提交到SVN了;我们就在这个新的controller中增加自己负责的方法,完全没注意这个坑。结果就是所有update代码的同事都跑不了项目。(组长自己倒是后来删了样例方法,但是没提交,还研究了半天为啥别人的项目不能跑而自己的能跑)
8.总结,第一个锅其它组背,mapper.xml有问题,可能是它们使用的mybatis generator的jar包版本与项目中jar包版本有冲突,生成的xml不能用(也可能是他们的cmd生成命令写错了?两个组是相同的错误也是稀奇),重新生成;第二个锅就分给组长了,controller中的url重复也会导致项目跑不起来,还不报错。
后记:
1.这次事故导致项目无法启动,三个小组都有锅;好在处于开发阶段,改正就行了(这点小事领导也不知道,应该)
2.中午领导组织开会,为每个小组配置了2个前端同事,正在讨论统一使用的vue框架。
3.下午继续开发工作,发现有人在某个mapper.xml中写了这句并commit了:
resultMap="java.lang.Integer"
然后就导致执行到访问数据库的语句时都报错500,位置是访问数据库的语句(项目倒是能起来)。
由于没有报错到xml,因此定位这个错误也费了一些时间。
正确的应该是:
resultType="java.lang.Integer"
改了就没问题了。
4.发现如果想当敏捷开发的leader,需要会搭项目框架(加各种插件工具jar包配置文件),会分配任务子任务,管理项目进度,沟通各方资源......总之偏管理方向,但技术也要熟悉。