“xxx cannot be cast to jakarta.servlet.Servlet “報錯解決方式
在做jsp的上機時候同學出現了一個500錯誤:com.kailong.servlet.ComputeBill cannot be cast to jaka.servlet.Servlet
然後因為我用的tomcat是8.xx版本,並沒有出現過這個情況,然後一頓查這個Servlet文件,從頭分析到尾,在我這能用在同學那就不行。一開始並沒有注意到這個jakarta,只是一直在想為啥提示這個Servlet文件不是Servlet嘞,該導的包也導了,web.xml也配置了,各種配置大小寫都查了一遍,然後還是不對,就一直報錯。
然後發現他的jdk是1.8,就想着是不是1.8版本不支持了?果斷換成18版本,然後重新編譯運行,還是這個500報錯。
整了好一會還是不中,然後就看這個tomcat的提示,感覺tomcat會不會有問題,然後去官網查了一下。
從Tomcat的官方文檔可以看到,Tomcat 10有一個大的變動:jar包從 javax.*
變成了 jakarta.*
,這就要求從Tomcat 9 等 遷移到Tomcat 10的時候,要麼做一些代碼改動,要麼藉助Tomcat官網提供的遷移工具將編譯好的war變更成用jakarta
的。
然後發現問題就好解決了。
之前使用都是servlet-api.jar
這個包,對於tomcat10版本的就得換包了。
得換成jakarta.servlet-api
和jakarta.servlet.jsp-api
這倆包
下載地址:jakarta.servlet-api
://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api/
jakarta.servlet.jsp-api
://mvnrepository.com/artifact/jakarta.servlet.jsp/jakarta.servlet.jsp-api/
導包之後,把javax.servlet.xx
換成jakarta.servlet.xx
當然還有另外一種方式就是吧tomcat降版本,從10.xx降個版本,不過相比於tomcat10.xx新增更多特性,還是用第一種方式,就換個包的方式來解決比較好且合理。
公眾號本文地址://mp.weixin.qq.com/s/U0IcXL8mtrbxSFmUs7Jfzg
頭條://www.toutiao.com/article/7162835577032049163/?wid=1667728043289
歡迎關注公眾號:愚生淺末。