今天在配置SpringMVC時,不知道是何原因Tomcat無法啟動了,而刪除SpringMVC項目后,tomcat又正常了,但一直提示信息: No Spring WebApplicationInitializer types detected on classpath。
目前還不知打哦是什么原因造成,可能跟tomcat版本為7過高有關,而我用的Spring版本可能不合適。我會后續改進,改好后會寫出解決方案。如果有知道為什么的可以留言評論,謝謝大家。
<!--下面為改好的方案-->詳細的配置SpringMVC過程可以看我的配置SpringMVC的博客。
首先我們分析下,tomcat是在我配置SpringMVC的過程中導致tomcat無法啟動的,而在這其中,我們修改的僅僅是所配項目的wub.xml發生了改變,而錯誤信息顯示我們配置的項目在tomcat上發布了,但發布的項目中web.xml配置錯誤。我們要找到web.xml中的錯誤,其中最為簡單是由於<url-pattern>的錯誤,由於/的存在。
另外要看好自己的classpath,有的默認classpath為web項目下的src,有的為WebContent下的Web-INF。
個人建議將Spring、hibernate等涉及Web的jar包放在Web-INF下的lib文件夾中,因為tomcat運行尋找jar包首先會看此位置的jar包,一些明明添加build path的jar包也許運行時仍提示找不到Class,也就是因為放在java Libraries下,而不是放在Web_INF下的lib中。
相關錯誤信息為:
信息: validateJarFile(E:\project\boce\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\SpringMvcTest\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class 八月 19, 2014 2:48:12 下午 org.apache.catalina.core.ContainerBase startInternal 嚴重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMvcTest]] at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:188) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:799) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMvcTest]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) ... 6 more Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> /*.do in servlet mapping at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3279) at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3254) at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1361) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1341) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:873) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:371) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 6 more 八月 19, 2014 2:48:12 下午 org.apache.catalina.core.ContainerBase startInternal 嚴重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:188) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.startup.Catalina.start(Catalina.java:689) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455) Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: org.apache.catalina.LifecycleException: A child container failed during start at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:799) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 6 more 八月 19, 2014 2:48:12 下午 org.apache.catalina.startup.Catalina start 嚴重: The required Server component failed to start so Tomcat is unable to start. org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) at org.apache.catalina.startup.Catalina.start(Catalina.java:689) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455) Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 7 more Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 9 more Caused by: org.apache.catalina.LifecycleException: A child container failed during start at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 11 more
分析上面的錯誤信息是由於在配置文件web.xml中出現的/*.do出現的問題。這個問題可以通過將/去掉來解決。這是關於配置時最簡單的錯誤。
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/*.do</url-pattern> </servlet-mapping>
改為:
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
//--------------------------------------------------------------------------
現對上述問題作出我個人的解決,如果有相似情況可以進行嘗試。
相似情況無法啟動時,有時候會報少包多包等錯誤,再此為了避免在配置SpringMVC過程中出現這種來回下載來回找Jar包的問題,給各位提供一個全面的針對SpringMVC框架的jar包。(本文所引用的jar包來自互聯網,包括Spring的相關jar包,hobernate相關jar包,以及mysql數據庫連接jar包)
下面是jar包詳細目錄:
下面是百度網盤分享SpringJar的文件,有需要進行SpringMVC架構的初學者可以使用。(因為初學者不知道該使用哪些jar包,自己很難調配)
鏈接: http://pan.baidu.com/s/1bnvmAsB 密碼: h8ed
或訪問:http://download.csdn.net/detail/lin6286878/7788057