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。


以上是DispatcherServlet不能转换为类jakarta.servlet.Servlet(ClassCastException)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>