2016-11-15 14 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 .Afterの展開で、私はエラー:SRVE0201E:サーブレット[org.springframework.web.servlet.DispatcherServlet]:ないサーブレットクラス

を取得しています
Error 404: SRVE0201E: Servlet[org.springframework.web.servlet.DispatcherServlet]: not a servlet class. 

web.xmlに余分なコードが必要ですか?この問題を解決するには?

+1

問題の完全なスタックトレースを提供します。 「サーブレットクラスではない」とは通常、Javaの上位バージョンでコンパイルされたことを意味します。ビルド時とデプロイされたサーバーで同じJavaバージョンを使用していることを確認してください。 – Gas

答えて

2

「サーブレットクラスではない」とは、キャスト失敗(ClassCastExceptionを持つFFDCログがある可能性があります)を示す可能性があります。多くの場合、Servlet APIをあなたのアプリケーションと "親の最後の"クラスの読み込みを実行しています。その場合、サーブレットはAPIの独自のコピーにリンクしますが、WebSphereはそれ自身のバージョンにリンクします.JVMでは、別々のクラスローダーによってロードされたクラスを2つキャストすることはできません。

アプリにサーブレットAPIを持っている場合は、そのAPIを「持ち出す」方法がないため、サーブレットAPIを削除します。また、実際に "親の最後"を実行する必要があるかどうかを検討することもできます。たとえば、自分のWebサービスプロバイダやJSF実装を持たない場合は、おそらく必要ありません。

関連する問題