记录一次遇到的神奇bug,项目在公司环境运行没有任何问题,但是在家里自己的电脑上运行报错 “More than one fragment with the name [spring_web] was found. This is not legal …”。
然后结合自己公司和自己电脑上环境的差异。发现tomcat版本有差异,我本地是8.5.38的tomcat,公司的是7.0.25版本的。更换过tomcat之后,重新编译项目为7的版本,项目终于可以运行了。
此时问题虽然解决了,但是为什么更换过tomcat和版本编译之后项目就可以了呢?。安奈不住心中的好奇,经过一番折腾网上查阅资料。终于把问题本质定位到了web片段这个概念上,我的项目有引入一个spring-webmvc这个jar包,然后我在本地下载一个版本的时候出了问题,就切换了一个版本,这时项目重新编译时可能没有从头到尾重新编译,导致出现了多个web片段。最终测试发现idea重启,整个项目重新编译之后tomcat8也是可以运行的。此时心中瞬间豁然开朗,前边之所更换过tomcat和版本编译之后项目就可以运行也可以说的通了,因为在项目更换tomcat和版本编译之后,整个项目从头到尾进行了重新编译。
总结:在解决bug的道路上,我们不仅要知其然,还要知其所以然。不然很可能只是误打误撞解决了当前bug(就像为这次刚开始以为是tomcat的问题一样),以后遇到类似bug,还是要翻车