欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Eclipse启动Tomcat时报Error loading WebappClassLoader错误的解决方法

程序员文章站 2022-03-11 11:50:40
Eclipse启动Tomcat时报Error loading WebappClassLoader错误的解决方法最近新建了一个JSF项目(网上查到用Struts,Spring MVC也会如此),配置好以后用Eclipse启动Tomcat报了如下错误:严重: Error loading WebappClassLoader... 14-03-08...

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) 

网上搜了几种解决方案:

1、关掉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的工程目录,找到对应的存放jar包的目录:.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps\jsf2nd\web-inf\lib,发现果然少了两个jar包,将之放入后问题就解决了。

错误原因:至今未能查明究竟是哪个地方出错了才使得eclipse不能将jar包放到eclipse的tomcat插件下面。

可能的几个原因:
1、我的eclipse选择的默认编译是jdk1.5,而这个项目用的是tomcat6,
2、我的eclipse里面默认设置的tomcat的编译器也是1.5