今天搭建一个新的项目,采用spring+hibernate框架,项目框架搭建完成以后,启动tomcat,报错,如下图。
第一反应是tomcat的问题,于是clean了tomcat,没用,再把tomcat删除,重新装入eclipse,还是没用。
开始在网上到处搜索,发现遇到这问题的人还真不少。有的叫你修改tomcat配置文件,有的叫修改web.xml文件。试了均无用。
后面看到一个人,说是没用将maven的jar包添加到项目的部署路径来,于是照他说的,项目右键properties--Deployment Assembly。一看,我的maven引入的jar包已经在部署路径上了。如下图所示。所以不是这个问题。
有人说是web.xml错误,为了判断是否是这样,我把web.xml清空,错误依旧。也就是说项目还没启动起来,spring容器根本没有启动,就遇到报错了。所以初步怀疑是在加载jar包的时候出错。正好看到有人说可能是jar包冲突。
为了验证这个可能性,我将maven中的依赖包全部去掉,也就是一个没有任何jar包的空pom.xml文件,同时清空web.xml。这次可以启动起来了。所以证实了猜测,应该是jar包的问题。
但是那么多jar包,如何知道是哪两个包冲突了呢?那就没办法了,再恢复原来的pom.xml文件,然后一个一个删除,启动,直到删除掉某个jar文件以后,可以启动成功,就说明就是这个jar包的问题了。找出jar包问题以后。后续的排错工作就比较简单了。
在这个问题里,我最后找出的问题是spring的jar包和hibernate的jar包发生了冲突,我引用的spring 的jar包是4.x的,而引用的hibernate到了5.x。后将hibernate的jar包也降到4.x,即解决了问题。