Eclipse啟動Tomcat時報Error loading WebappClassLoader錯誤的解決方法
context: /jsf2nd delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloade
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)
網(wǎng)上搜了幾種解決方案:1、關(guān)掉myeclipse,把原來的tomcat換掉,如果是安裝版的就卸載,重新放一個tomcat,啟動myeclipse,配置tomcat,部署,再啟動tomcat,一切OK。2、之前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 問題就得以解決了。
這兩種解決方案試了都不行,但是大體了解到可能是jar包沒有導入進去,所以進了eclipse的工程目錄,找到對應(yīng)的存放jar包的目錄:.metadata.pluginsorg.eclipse.wst.server.coretmp3wtpwebappsjsf2ndWEB-INFlib,發(fā)現(xiàn)果然少了兩個jar包,將之放入后問題就解決了。
錯誤原因:至今未能查明究竟是哪個地方出錯了才使得eclipse不能將jar包放到eclipse的tomcat插件下面。
可能的幾個原因:1、我的eclipse選擇的默認編譯是jdk1.5,而這個項目用的是Tomcat6, 2、我的Eclipse里面默認設(shè)置的tomcat的編譯器也是1.5