「编程」Tomcat9升级Tomcat10遇到的坑

「编程」Tomcat9升级Tomcat10遇到的坑

精选文章moguli202025-03-02 18:55:4610A+A-

由于公司需要,在解决开源漏洞的时候需要将Tomcat从9升级到10版本,只是改了pom文件中的版本后发现,程序无法正常运行,提示某些函数不存在。

pom文件修改



    10.0.23



    org.apache.tomcat.embed
    tomcat-embed-core
    ${tomcat.version}
    
        
            org.apache.tomcat
            tomcat-annotations-api
        
    


    org.apache.tomcat
    tomcat-annotations-api
    ${tomcat.version}


    org.apache.tomcat.embed
    tomcat-embed-el
    ${tomcat.version}


    org.apache.tomcat.embed
    tomcat-embed-websocket
    ${tomcat.version}
    
        
            org.apache.tomcat.embed
            tomcat-embed-core
        
    

出现的错误

java: 无法访问javax.servlet.ServletException,找不到javax.servlet.ServletException的类文件

具体原因是代码中用了
MissingServletRequestParameterException类,但是找不到了,通过查找源头,发现spring-web的5.3.13版本NestedServletException文件中无法找到
javax.servlet.ServletException。难道是升级带来的问题?!

查看Tomcat官网介绍10版本的更新内容:

servlet的包名有变化

Tomcat 10 已将servlet的包名从javax.servlet更改为jakarta.servlet,所以代码中凡是引入了servlet包的地方都需要修改。如果不修改,有很大的概率会遇到一些莫名其妙的报错。

Java代码中可以通过批量的查找替换进行修改。将javax.servlet替换为jakarta.servlet。

但是Spring Framework的源码我们也改不了啊,难道5.3.13版本没有支持jakarta.servlet?

查看Spring Framework官网内容:

如果项目中使用Spring Framework,实际引用Tomcat的是Spring Framework。所以要去官网或者源码好好看看,Spring Framework那个版本才是真正使用Tomcat10的。

原来从6.0版本开始才支持。

另外,如果升级Spring Framework,还需要升级其他依赖。

所以,升级一定要仔细,先看好新版本内容,升级之后要详细测试。

建议,先不要将Tomcat升级到10版本。

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2