java - ServletDispatcher 无法转换为我的 spring 项目中的 Javax.servlet.Servlet 异常

标签 java jakarta-ee servlets spring-mvc

启动tomcat服务器时出现异常

SEVERE: Servlet /MavenWeb threw load() exception
java.lang.ClassCastException: org.springframework.web.servlet.DispatcherServlet
cannot be cast to javax.servlet.Servlet

我正在使用 spring3,但我的 lib 文件夹中有 jar spring2-5-6,我将其从 pom.xml 中删除但仍出现在 lib 文件夹中 - 虽然我不确定这是否是一个问题。我正在使用 Eclipse IDE。谢谢!!

<dependencies>
    <dependency>
      <groupId>org.hibernate.javax.persistence</groupId>
      <artifactId>hibernate-jpa-2.1-api</artifactId>
      <version>1.0.0.Draft-6</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-annotations</artifactId>
      <version>3.5.6-Final</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>3.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>3.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>3.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>3.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>3.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1-b01</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webflow</artifactId>
      <version>1.0.6</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

最佳答案

您不应该在一个项目中使用多个版本的 Spring JAR,但这不是问题所在。

问题很可能是由两个不同的类加载器加载的 servlet API 类引起的。可能你有 servlet*.jar或您的 WAR 中的其他一些特定于容器的 JAR。通过设置它们的 <scope> 来删除它们至 providedpom.xml .

关于java - ServletDispatcher 无法转换为我的 spring 项目中的 Javax.servlet.Servlet 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11704069/

相关文章:

java - 在java中初始化byte[]

java - 如何从 Spring Condition 访问文件属性?

tomcat - Quartz Job Scheduler - Multi-Tenancy 设置

java - 什么 Hibernate 类型用于 SQLQuery 中的可序列化字段

java - 替换 @Autowired Httpservlet 以及为什么在 springbok 中 Autowired httpservlet 不是一个好的实践?

java - 有关即将推出的 fork-join 框架的资源

java - 无法更改 Java 文件权限

java - 性能/压力测试 Java EE 应用程序

除 tomcat 之外的 Java Web 服务

java - 获取当前动态web项目JAVA的路径