2016-11-15 139 views
1
<?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。經過部署,我越來越錯誤在IBM websphere.Error 404 Spring MVC的部署:SRVE0201E:Servlet的[org.springframework.web.servlet.DispatcherServlet]:不是一個servlet類

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

有沒有在web.xml中所需要的任何額外的代碼?如何解決這個問題?

+1

提供充分的問題堆棧跟蹤。 '不是servlet類'通常意味着它是用更高版本的Java編譯的。確保在構建期間和部署的服務器中使用相同的Java版本。 – Gas

回答

2

這往往代表着包裝問題 - 「不是一個servlet類」可以表示鑄造失敗(您可能有一個FFDC日誌,一個ClassCastException),而且在許多情況下,它可以通過包裝和Servlet API造成的您的應用程序和「父最後」類加載運行。當發生這種情況,你的servlet鏈接到自己的API的副本,但的WebSphere鏈接到它自己的版本,以及JVM不能投通過單獨的類加載器加載(即使它們是相同的)一類的兩個副本。

如果你在你的應用程序中的Servlet API中,將其刪除,因爲沒有辦法「自帶」該API。您可能還需要考慮你是否真的需要用「父最後一個」運行 - 如果你沒有試圖把,說,你自己的網絡服務提供商或JSF實現,你也許並不需要它。