2013-05-21 94 views
2

我試圖運行一個與tomcat的spring mvc基本應用程序,並獲取http 404錯誤。我得到下面的啓動錯誤。這是工作之前,我不知道哪裏出了毛病we.xmlTomcat的啓動問題(web.xml)

May 21, 2013 6:09:37 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property  'source' to 'org.eclipse.jst.jee.server:testspring' did not find a matching property. 
May 21, 2013 6:09:37 PM org.apache.coyote.http11.Http11Protocol init 
INFO: Initializing Coyote HTTP/1.1 on http-8080 
May 21, 2013 6:09:37 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 471 ms 
May 21, 2013 6:09:37 PM org.apache.catalina.core.StandardService start 
INFO: Starting service Catalina 
May 21, 2013 6:09:37 PM org.apache.catalina.core.StandardEngine start 
INFO: Starting Servlet Engine: Apache Tomcat/6.0.33 
May 21, 2013 6:09:37 PM org.apache.tomcat.util.digester.Digester endElement 
SEVERE: End event threw exception 
java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at  org.apache.tomcat.util.IntrospectionUtils.callMethodN(IntrospectionUtils.java:959) 
at org.apache.catalina.startup.CallMethodMultiRule.end(WebRuleSet.java:789) 
at org.apache.tomcat.util.digester.Rule.end(Rule.java:229) 
at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1138) 
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1642) 
at org.apache.catalina.startup.ContextConfig.applicationWebConfig(ContextConfig.java:365) 
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1076) 
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4612) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name frontcontrol 
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:2739) 
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:2719) 
... 37 more 
May 21, 2013 6:09:37 PM org.apache.catalina.startup.ContextConfig applicationWebConfig 
SEVERE: Parse error in application web.xml file at jndi:/localhost/testspring/WEB- INF/web.xml 
java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name frontcontrol 
at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2806) 
at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2832) 
at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1141) 
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1642) 
at org.apache.catalina.startup.ContextConfig.applicationWebConfig(ContextConfig.java:365) 
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1076) 
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4612) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name frontcontrol 
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:2739) 
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:2719) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at  org.apache.tomcat.util.IntrospectionUtils.callMethodN(IntrospectionUtils.java:959) 
at org.apache.catalina.startup.CallMethodMultiRule.end(WebRuleSet.java:789) 
at org.apache.tomcat.util.digester.Rule.end(Rule.java:229) 
at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1138) 
... 29 more 
May 21, 2013 6:09:37 PM org.apache.catalina.startup.ContextConfig applicationWebConfig 
SEVERE: Occurred at line 20 column 21 
May 21, 2013 6:09:37 PM org.apache.catalina.startup.ContextConfig start 
SEVERE: Marking this application unavailable due to previous error(s) 
May 21, 2013 6:09:38 PM org.apache.catalina.core.StandardContext start 
SEVERE: Error getConfigured 
May 21, 2013 6:09:38 PM org.apache.catalina.core.StandardContext start 
SEVERE: Context [/testspring] startup failed due to previous errors 
May 21, 2013 6:09:38 PM org.apache.coyote.http11.Http11Protocol start 
INFO: Starting Coyote HTTP/1.1 on http-8080 
May 21, 2013 6:09:38 PM org.apache.jk.common.ChannelSocket init 
INFO: JK: ajp13 listening on /0.0.0.0:8009 
May 21, 2013 6:09:38 PM org.apache.jk.server.JkMain start 
INFO: Jk running ID=0 time=0/26 config=null 
May 21, 2013 6:09:38 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 309 ms 

我看不出有什麼毛病我的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_2_5.xsd" id="WebApp_ID" version="2.5"> 
<display-name>testspring</display-name> 
<welcome-file-list> 
<welcome-file>index.html</welcome-file> 
<welcome-file>index.htm</welcome-file> 
<welcome-file>index.jsp</welcome-file> 
<welcome-file>default.html</welcome-file> 
<welcome-file>default.htm</welcome-file> 
<welcome-file>default.jsp</welcome-file> 
</welcome-file-list> 
<servlet> 
<servlet-name>spring</servlet-name> 
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>frontcontrol</servlet-name> 
<url-pattern>/</url-pattern> 
</servlet-mapping> 
</web-app> 
+0

看到這裏http://stackoverflow.com/questions/611465/tomcat-is-unable-to-find-my-servlet-and-is-throwing-exceptions-but-why – PSR

+0

你看這個? http://stackoverflow.com/questions/2293797/tomcat-startup-web-xml-issue –

回答

6

看到這個堆棧跟蹤

產生的原因:java.lang.IllegalArgumentException異常:servlet映射指定了一個未知的servlet名frontcontrol

你有frontControl Servlet映射... 。但沒有corrosponding SERVLET標籤...

我認爲這應該是正確的映射在你的情況。

<servlet> 
<servlet-name>frontcontrol</servlet-name><!-- Notice this line changed--> 
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>frontcontrol</servlet-name> 
<url-pattern>/</url-pattern> 
</servlet-mapping>