# java.lang.ClassCastException: com.yang.servlet.Hellebore cannot be cast to jakarta.servlet.Servlet

当我们使用tomcat10构建java servlet时, 通过设定的路由访问我们的自定义类

时, 往往出现这样的问题, 原因是因为tomcat版本的问题, 切换到tomcat9就可以解决问题,切换tomcat版本之后建议重新建立项目, 不然会出现访问根目录的jsp出错, 原因目前我还不太清楚, 应该是在创建web时tomcat10自动写入了一些配置, 重新创建项目就可以就解决问题。


image-20210907101258955.png

下面我们聊聊为啥tomcat10会出现问题

Tomcat 10自带Jakarta® EE,包名不再是“javax.servlet.**”

自从Oracle把Java EE捐给Apache后新版本的JavaEE也就正式的改名为了”Jakarta® EE”。值得注意的是2020年2月Tomcat发布了第10个版本,Tomcat 10 m1将JavaEE也换成了Jakarta® EE(Jakarta Servlet 5.0、Jakarta Server Pages 3.0、Jakarta Expression Language 4.0、Jakarta WebSocket 2.0、Jakarta Authentication 2.0 和 Jakarta Annotations 2.0 )。

Jakarta® EE较以前的JavaEE有一个非常非常重要的更新:包名不再是”javax.servlet.”而是改成了”jakarta.servlet.”,所以,如果需要兼容新版本的API就赶紧去改包名吧!

这是因为使用了最新的tomcat10,而tomcat10有个最大的变动就是Tomcat 10 m1将JavaEE也换成了Jakarta® EE Jakarta® EE较以前的JavaEE有一个非常非常重要的更新:包名不再是”javax.servlet.“而是改成了”jakarta.servlet.”

解决方案: 使用“jakarta.servlet” 或者将tomcat改完tomcat9 就可以了

借鉴博客:https://www.kuangstudy.com/bbs/1377529221416493058

你可能感兴趣的:(# java.lang.ClassCastException: com.yang.servlet.Hellebore cannot be cast to jakarta.servlet.Servlet)