DispatcherServlet不能转换为类jakarta.servlet.Servlet(ClassCastException)
我有一个与此处DispatcherServlet cannot be cast to Servlet
类似的问题,这是使用 Eclipse 运行新的 Spring MVC 项目时的问题。但是,所有答案都建议使用 Maven 的解决方案,而我没有使用 Maven。
我为这个问题搜索了一天,但没有解决方案。
INFO: Starting Servlet engine: [Apache Tomcat/10.0.4]
Mar 22, 2021 9:59:10 AM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
WARNING: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took
[447] milliseconds.
Mar 22, 2021 9:59:10 AM org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for
this logger for a complete list of JARs that were scanned but no TLDs were found in them.
Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Mar 22, 2021 9:59:11 AM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet [dispatcher] as unavailable
Mar 22, 2021 9:59:11 AM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet [dispatcher] in web application [/spring-mvc-demo] threw load() exception
java.lang.ClassCastException: class org.springframework.web.servlet.DispatcherServlet cannot
be cast to class jakarta.servlet.Servlet (org.springframework.web.servlet.DispatcherServlet
is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader
@62e70ea3; jakarta.servlet.Servlet is in unnamed module of loader java.net.URLClassLoader
@8bd1b6a)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1043)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:984)
回答
Spring(和 Spring Boot)目前只支持 JavaEE 而不是 JakartaEE。这意味着它只能在/与 JavaEE 兼容的服务器上运行。Tomcat10是目前不受支持的 JakartaEE 规范的实现。
唯一的解决办法是降级到Tomcat 9。
THE END
二维码