今天在学习springmvc的时候发现了一个关系冲突的问题,首先我不是大神,我只是一个初学者。
问题是由javax和jakerta引出来的。我的tomcat版本是9,jdk是17,spring是6.0.11,然后tomcat9使用的应该还是javax,但是在使用spring自己封装好的WebApplicaitonUtils的 getWebApplicationContext方法去优化代码,让一些读取配置文件的写法不会被写死,这个方法呢需要传一个servletContext对象,我自己创建这个对象之后将它传入方法里面却提示我传入的类型有误,他需要一个jakerta.servlet.ServletContext而不是javax.servlet.ServletContext。
好好好,竟然问题出来了,那么我们就可以去解决了,经过不断的沉浸式搜索,才明白,spring6需要的版本最低都是17,我刚好符合,在最后我在tomcat上找到了自认为是问题的所在。
首先,spring6的可用版本:
Java 17+(目前 Spring Framework 5.3.x 的基线是 Java 8-17)
Jakarta EE 9+(目前 Spring Framework 5.3.x 的基线是 Java EE 7-8)
而tomcat9却是绑定Java EE8,在这里就有冲突了,于是我果断的将我的tomcat换成了10,并且将pom文件中的对应依赖换成了jakerta
jakarta.servlet.jspjakarta.servlet.jsp-api3.0.0providedjakarta.servletjakarta.servlet-api5.0.0provided
然后在windows将tomcat配置改成10的,idea重新导入tomcat,最后问题就解决了