【发布时间】:2021-06-18 20:09:51
【问题描述】:
我有一个与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)
【问题讨论】:
-
看起来您正在使用不支持 Tomcat 10 的 Spring 版本运行 Tomcat 10。所有 JavaEE 类在成为 JakartaEE 时都已重命名。似乎没有任何版本的 Spring 支持新的命名空间 - github.com/spring-projects/spring-framework/issues/25354。使用 Tomcat 9。
-
我使用 Tomcat 10、Spring 5.29 和 Eclipse Enterprise 2021-03 (4.19.0)
-
降级 Spring 有什么帮助?使用 Tomcat 9。
-
Spring 目前仅支持 JavaEE。您正在使用使用 JakartaEE 的 Tomcat10,因此无法正常工作。您需要使用 tomcat9(它是 JavaEE 而不是 JakartaEE)。
标签: java spring eclipse spring-mvc tomcat