2012-11-25 72 views
2

我是spring的新手,並且在通過web.xml鏈接/配置springframework時遇到問題。 運行我的應用程序時出現以下錯誤。如何配置spring的web.xml

錯誤:

HTTP Status 500 - Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet 


    type Exception report 

    message Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet 

    description The server encountered an internal error (Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet) that prevented it from fulfilling this request. 

    exception 

    javax.servlet.ServletException: Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet 
     org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
     org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
     org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
     org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
     org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
     org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
     org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
     java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
     java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
     java.lang.Thread.run(Unknown Source) 


    root cause 

    java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet 
     org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711) 
     org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556) 
     org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
     org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
     org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
     org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
     org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
     org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
     org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
     java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
     java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
     java.lang.Thread.run(Unknown Source) 

顯然,它找不到在圖書館類org.springframework.web.servlet.DispatcherServlet。但是,我不知道如何告訴web.xml在哪裏尋找這個類。

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns="http://java.sun.com/xml/ns/javaee" 
      xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 

     <servlet> 
      <servlet-name>DispatcherSample</servlet-name> 
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     </servlet> 

     <servlet-mapping> 
      <servlet-name>DispatcherSample</servlet-name> 
      <url-pattern>/PlayField.html</url-pattern> 
     </servlet-mapping> 

     <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
     <welcome-file>Welcome.html</welcome-file> 
     </welcome-file-list> 

    </web-app> 

DispatcherSample-servlet.xml中

<?xml version="1.0" encoding="UTF-8"?> 

    <beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

     <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
      <property name="mappings"> 
       <props> 
        <prop key="/PlayField.html">playfieldController</prop> 
       </props>  
      </property> 
     </bean> 

     <bean id="playfieldController" class="demos.PlayfieldController"/> 

    </beans> 

回答

3

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

您必須添加spring-webmvc.jar到CLASSPATH(最有可能/WEB-INF/lib目錄)。剩下的配置看起來很好。

+0

添加到目錄中,現在獲取HTTP狀態500 - 組織/ springframework/context/EnvironmentAware -------------------------- -------------------------------------------------- ---- 類型異常報告 消息組織/ springframework的/上下文/ EnvironmentAware 描述服務器遇到阻止其完成此請求一個內部錯誤(組織/ springframework的/上下文/ EnvironmentAware)。 – Muhammad

+0

@Muhammad:確保你所有的Spring JAR文件都在同一個版本,並且你的CLASSPATH上也有'spring-context.jar'。 –

+0

感謝Tomasz,我添加了spring-context.jar(對所有jar文件使用相同的版本),現在又抱怨HTTP Status 500-org/springframework/beans/factory/Aware。請你能建議是否有完整的jar文件列表,用於spring mvc項目? – Muhammad

相關問題