最近新建了一个JSF项目(网上查到用Struts,Spring MVC也会如此),配置好以后用Eclipse启动Tomcat报了如下错误:严重: Error loading WebappClassLoader
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,而这个项目用的是Tomcat容器是6,项目的jdk应该用1.6的比较好。 2、我的Eclipse里面默认设置的对tomcat1.6容器的编译器也是1.5。
分享到:
相关推荐
Error loading WebappClassLoader org.springframework.web.servlet.DispatcherServlet java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet at org.apache.catalina.loader....
9. "Tomcat启动源代码分析.pdf":深入到启动脚本和Java代码,解释了从启动脚本开始,如何初始化和启动Tomcat服务的全过程。 10. "tomcat类加载机制.pdf":再次聚焦于Tomcat的类加载机制,可能深入到更多细节和技巧...
本篇文章将深入探讨在使用Tomcat 6.0时可能会遇到的jar问题及其解决方案。 Tomcat 6.0发布于2006年,是Apache软件基金会的Tomcat项目中的一个重要版本,支持Java Servlet 2.5和JavaServer Pages (JSP) 2.1规范。...
通过对Tomcat 8.0源码的学习,开发者能够更深入地理解Web服务器的工作机制,从而更好地优化应用性能,解决复杂问题,甚至参与到Tomcat的贡献和维护中。这是一条通往Java Web高级开发者之路的必经之路。
Tomcat中的组件都遵循生命周期接口,包括初始化、启动、停止和销毁四个阶段。这些接口使得开发者可以在各个阶段添加自定义逻辑。 4. **类加载机制** Tomcat使用自定义的类加载器来加载Web应用中的类,以实现不同...
2. **类加载机制**:Tomcat使用自定义的类加载器,如`CommonClassLoader`、`WebappClassLoader`等,以实现不同Web应用间的隔离。 3. **请求处理**:` CoyoteAdapter`是Servlet容器与Tomcat网络接口(Coyote)之间的...
7. **错误处理和日志系统**:Tomcat有自己的日志框架,学习`Logger`和`ErrorHandler`的使用,能帮助你更好地定位和解决运行时问题。 通过以上这些关键点的学习,结合《深入剖析Tomcat》这本书的指导,你将能够逐步...
【标题】"Tomcat7 负载Jar包" 涉及的知识点主要集中在Tomcat服务器的配置和管理上,特别是如何优化Tomcat以处理大量JAR包的加载。Tomcat是Apache软件基金会的Jakarta项目下的一个开源Java Servlet容器,它广泛用于...
Tomcat启动时会启动一个检测线程,该线程会定时检查应用中的类是否有变化,比如类的数量变化或类的修改。一旦检测到变化,Tomcat会停止应用的启动线程,清除引用,并将加载该应用的WebappClassLoader置为null,然后...
Tomcat的类加载机制遵循“父类加载优先”原则,通过`CommonLoader`、`CatalinaLoader`、`SharedLoader`和`WebappClassLoader`四个层次进行加载,保证了不同Web应用之间的类隔离。 8. **安全性** Tomcat支持多种...
为了解决这个问题,Tomcat引入了自定义的类加载策略。 Tomcat的类加载机制可以概括为以下几点: 1. **WebAppClassLoaders**: 每个Web应用都有自己的WebAppClassLoader,用于加载应用中的类。这是打破双亲委派模型...
深入理解Tomcat的ClassLoader源码对于优化应用性能和解决类加载问题至关重要。 在Tomcat 5.0.18版本中,ClassLoader的设计主要基于Java的双亲委派模型。这个模型规定,当一个ClassLoader尝试加载某个类时,它首先会...
在Java的Web应用开发中,WebappClassLoader是Tomcat等Servlet容器用于加载应用中类的特定类加载器。它负责加载Web应用程序的类和资源,确保每个Web应用都有自己的类加载器实例,从而实现类的隔离。 该问题可能涉及...
9. **错误处理**:分析异常处理流程,例如`GlobalErrorHandler`,掌握Tomcat如何处理运行时错误。 通过学习Tomcat6的源码,开发者不仅可以了解Web服务器的实现原理,还能掌握很多Java编程的高级技巧,例如线程池...
Tomcat's WebappClassLoader is currently not instrumentable, so Spring provides a custom ClassLoader that can be used by placing spring-instrument-tomcat.jar in $TOMCAT_HOME/lib and putting a loader ...