【问题标题】:Error in spring mvc deploying in IBM websphere.Error 404: SRVE0201E: Servlet [org.springframework.web.servlet.DispatcherServlet]: not a servlet class在 IBM websphere 中部署 spring mvc 时出错。错误 404:SRVE0201E:Servlet [org.springframework.web.servlet.DispatcherServlet]:不是 servlet 类
【发布时间】:2016-11-15 12:48:55
【问题描述】:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <servlet>
  <servlet-name>spring</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>spring</servlet-name>
  <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

上面的代码是我的web.xml。部署后,我得到了

Error 404: SRVE0201E: Servlet[org.springframework.web.servlet.DispatcherServlet]: not a servlet class.

web.xml 中是否需要额外的代码?如何解决这个问题?

【问题讨论】:

  • 提供有问题的完整堆栈跟踪。 “不是 servlet 类”通常意味着它是用更高版本的 Java 编译的。确保在构建期间和部署的服务器中使用相同的 Java 版本。

标签: spring-mvc websphere web.xml


【解决方案1】:

这通常表示打包问题 - “不是 servlet 类”可能表示转换失败(您可能有一个带有 ClassCastException 的 FFDC 日志),并且在许多情况下,这可能是由于在您的应用程序并以“父最后”类加载运行。发生这种情况时,您的 servlet 链接到它自己的 API 副本,但 WebSphere 链接到它自己的版本,并且 JVM 不能转换由单独的类加载器加载的类的两个副本(即使它们是相同的)。

如果您的应用中有 Servlet API,请将其删除,因为无法为该 API“自带”。您可能还想考虑是否真的需要使用“最后一个父级”运行 - 如果您不想引入自己的 Web 服务提供者或 JSF 实现,那么您可能不需要它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2015-02-08
    • 1970-01-01
    • 2015-04-29
    • 2021-11-11
    • 1970-01-01
    • 2017-02-13
    相关资源
    最近更新 更多