WTP/JSF问题的解决--java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
来源:互联网 发布:php引用函数 编辑:程序博客网 时间:2024/04/30 00:58
转自:http://babyblue2004.bokee.com/5733663.html
这几日在www.eclipse.org上看了一篇文章(http://www.eclipse.org/webtools/jsf/dev_resource/JSFTutorial-RC3/JSFTools_tutorial.html),按照上面作了一个JSF程序。出现以下问题:
严重: Error loading WebappClassLoader
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@184ec44
javax.faces.webapp.FacesServlet
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1355)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1034)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3951)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4225)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1190)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:292)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1305)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1569)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1578)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1558)
at java.lang.Thread.run(Unknown Source)
2006-10-8 9:51:58 org.apache.catalina.core.StandardContext loadOnStartup
严重: Servlet /JSFTutorial threw load() exception
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1355)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1034)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3951)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4225)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1190)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:292)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1305)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1569)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1578)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1558)
at java.lang.Thread.run(Unknown Source)
问题的原因似乎是没有找到javax.faces.webapp.FacesServlet,但是这个类的包我是放在classpath中的,在eclipse的"Libraries"中可以看到。这是为何?
为什么Tomcat会到WEB-INF/classes里面去找这个文件?
我花了整整一天的时间来解决这个问题。
参考了这两篇文章
1.http://dev.eclipse.org/mhonarc/lists/wtp-jsf-dev/msg00158.html
2.http://forum.java.sun.com/thread.jspa?forumID=427&threadID=598929
第一步:
将CLASS_PATH里面的jar包部署到WEB-INF目录中。这是在项目的属性中配置的。选择“JSF Library Refererences”,选中“Deploy jars to WEB-INF/lib”。
第二步:
这时候出现了“java.lang.NullPointerException”错误,内容为 “javax.faces.webapp.FacesServlet.init”。根据第二篇文章,出现这样的问题是因为 FactoryFinder.getFactory()工厂方法没能正确地返回相应的工厂。这是配置问题,重新配置
<listener>
<listener-class>
com.sun.faces.config.ConfigureListener
</listener-class>
</listener>
并删除<load-on-starup>1</load-on-starup>标签就可以了
ps:自己测试时,可能版本不同,未找到“JSF Library References”选项,于是直接在/WEB-INF下建/lib文件夹并负责相关jsf jar包到目录下,未出异常,可运行
- WTP/JSF问题的解决--java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
- FacesServlet (Java EEWTP/JSF问题的解决--java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
- jsf出现java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
- Caused By: java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet 发布异常
- Caused by: java.lang.NoClassDefFoundError: javax/faces/webapp/FacesServlet
- java.lang.ClassNotFoundException: org.operamasks.faces.webapp.filter.DefaultSuffixRedirector
- TROUBLESHOOTING: "java.lang.ClassNotFoundException: javax.faces.context.FacesContextFactory"
- java.lang.ClassNotFoundException: javax.persistence.EntityListeners异常解决
- JSF 2.0/2.1的javax.faces.bean.ViewScoped与JSF 2.2的javax.faces.view.ViewScoped
- javax.faces.FacesException: java.lang.LinkageError解决办法
- 解决更新ADT22后java.lang.ClassNotFoundException的问题。
- 解决Android报java.lang.ClassNotFoundException问题
- JSF--javax.faces.context.FacesContext
- 解决Rose2003的java.lang.ClassNotFoundException异常
- java.lang.ClassNotFoundException: javax.xml.parsers.SAXParserFactory
- java.lang.ClassNotFoundException: javax.persistence.Cacheable
- java.lang.ClassNotFoundException: javax.el.ELResolver解决方案
- java.lang.ClassNotFoundException: javax.persistence.EntityListeners
- NGN
- 华为C8500手机与PC相连后无提示
- 弱爆程序员的特征值
- 框架
- 在VMware7.0下重新编译kernel心得
- WTP/JSF问题的解决--java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
- Android软件开发之获取通讯录联系人信息(二十九)
- 钻穿牛角尖:using声明vs虚函数
- C# 单实例运行
- iPhone视频播放器(1)
- 修改Chrome浏览器(包括以其为内核)默认背景颜色为豆沙绿护眼色(支持windows ubuntu)
- Oracle表与索引的分析及索引重建
- 译文:Linux 与 BSD 之间的 10 个不同之处
- 关于变量引用和call对引用的解析