最近新建了一個JSF項目(網上查到用Struts,Spring MVC也會如此),配置好之後用Eclipse啓動Tomcat報了以下錯誤:嚴重: Error loading WebappClassLoaderjava
- context: /jsf2nd
- delegate: false
- repositories:
- /WEB-INF/classes/
- ----------> Parent Classloader:
- org.apache.catalina.loader.StandardClassLoader@1172e08
- javax.faces.webapp.FacesServlet
- java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
- at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128)
- at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
- at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
- at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
- 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(NativeMethodAccessorImpl.java:39)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
- at java.lang.reflect.Method.invoke(Method.java:597)
- at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
- at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
- 2011-12-8 9:11:27 org.apache.catalina.core.StandardContext loadOnStartup
- 嚴重: Servlet /jsf2nd threw load() exception
- java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
- at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128)
- at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
- at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
- at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
- 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(NativeMethodAccessorImpl.java:39)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
- at java.lang.reflect.Method.invoke(Method.java:597)
- at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
- at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
網上搜了幾種解決方案:web
一、關掉myeclipse,把原來的tomcat換掉,若是是安裝版的就卸載,從新放一個tomcat,啓動myeclipse,配置tomcat,部署,再啓動tomcat,一切OK。spring
二、以前jar包我是經過Build path -> Configure build path-> Add External JARs的方式添加的,程序編譯,Tomcat啓動都很正常,沒有錯誤。但是一訪問jsp頁面就報上述錯誤。 苦思不得其解,但看了錯誤信息說是找不到org.springframework.web.servlet.DispatcherServlet類,因此我就乾脆將spring.jar,spring-webmvc.jar等jar包統統手工添加到/WEB-INF/lib目錄下,而且將default output folder值改成projectName/WebContent/WEB-INF/classes 問題就得以解決了。apache
這兩種解決方案試了都不行,可是大致瞭解到多是jar包沒有導入進去,因此進了eclipse的工程目錄,找到對應的存放jar包的目錄:.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps\jsf2nd\WEB-INF\lib,發現果真少了兩個jar包,將之放入後問題就解決了。tomcat
錯誤緣由:至今未能查明到底是哪一個地方出錯了才使得eclipse不能將jar包放到eclipse的tomcat插件下面。mvc
可能的幾個緣由:app
一、個人eclipse選擇的默認編譯是jdk1.5,而這個項目用的是Tomcat6, eclipse
二、個人Eclipse裏面默認設置的tomcat的編譯器也是1.5webapp