`

WTP/JSF问题的解决--java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet

    博客分类:
  • jsf
阅读更多
转自: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:

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-jem-sdk-R-1.5.4-200705021353.zip

    标题 "wtp-jem-sdk-R-1.5.4-200705021353.zip" 暗示了这是一个与Web Tools Platform (WTP) 和 Java Enterprise Edition (Java EE) 开发相关的软件包。WTP 是一个 Eclipse 基金会项目,用于提供开发 web 应用程序和 ...

    eclipse-jee-2023-06-R-linux-gtk-x86-64.tar.gz

    标题中的“eclipse-jee-2023-06-R-linux-gtk-x86-64.tar.gz”指的是Eclipse集成开发环境(IDE)的一个特定版本,专为Java企业版(Java EE)开发设计。这个文件是针对64位Linux操作系统的,使用GTK(GIMP Toolkit)...

    eclipse-jee-2022-06-R-win32-x86_64.zip

    Eclipse JEE版包含了许多针对企业级开发的插件,如Web Tools Platform (WTP)、Enterprise JavaBeans (EJB)、JavaServer Faces (JSF)等,这些都使得开发者可以高效地构建复杂的分布式应用程序。 "Eclipse"作为一个...

    eclipse-java-2020-06-R-win32-x86_64.rar

    标题 "eclipse-java-2020-06-R-win32-x86_64.rar" 提供的信息表明这是一个Eclipse IDE的特定版本,专为Java开发设计,适用于Windows 32位和64位操作系统。Eclipse是全球开发者广泛使用的开源集成开发环境(IDE),...

    eclipse-committers-2023-12-R-win32-x86-64.zip

    Eclipse的插件体系是其一大亮点,它允许用户根据需求安装各种扩展,如Java开发工具(JDT)、Python Development Tools(PDT)或是Web工具平台(WTP)。此外,Eclipse还支持多种版本控制系统,如Git、SVN,以及主流的...

    eclipse-java-mars-2-linux-gtk-x86_64.tar.gz

    要运行Eclipse,只需在终端中导航到解压后的`eclipse`目录,然后执行`./eclipse`命令即可。首次启动时,Eclipse会引导用户创建或选择一个工作空间,工作空间是保存项目和配置的地方。 总的来说,Eclipse Mars 2是为...

    eclipse-SDK-3.1.1-linux-motif.tar.gz

    5. Web Tools Platform (WTP):支持Web和Java EE项目的开发,包括动态Web项目、Java服务器页面(JSP)、Servlet等。 三、Linux Motif支持 Linux Motif是X Window System下的图形用户界面库,Eclipse 3.1.1 版本特别...

    wtp-common-fproj-enablement-jdt-I-3.2.0-20100107113913.zip

    All WTP projects leverage this framework, but it can also be used independent of WTP. The JDT Enablement component extends the Faceted Project Framework to integrate with Java Development Tools. The...

    eclipse-java-2020-06-R-win32-x86_64.zip

    对于JavaEE开发,虽然这个版本默认专注于JavaSE,但用户可以自行安装相应的JavaEE插件,例如Eclipse Web Tools Platform (WTP),它提供了对Java企业级应用程序开发的支持,包括Web项目、JavaServer Faces (JSF)、...

    eclipse-jee-2021-06-R-win32-x86_64.zip

    Eclipse是一款流行的开源软件,主要用于Java和其他编程语言的开发,尤其是对于Java企业版(Java Enterprise Edition,简称JEE)的支持。 描述中的 "eclipse-jee-2021-06-R-win32-x86_64.zip" 与标题相同,暗示这个...

    mariadb-java-client-1.1.7.jar

    mariadb-java-client-1.1.7.jar

    eclipse搭建SSH框架详解

    如果下载的是Eclipse SDK,则需要额外安装Web插件,如Web Tools Platform (WTP) 和Tomcat插件等。 2. **Struts2**: - 下载地址:[http://struts.apache.org/download](http://struts.apache.org/download) - 解压...

    eclipse-jee-2022-09-R-linux-gtk-x86-64.tar.gz

    Eclipse是这个IDE的基础,而“eclipse-jee”强调了它是Eclipse的Java企业版,主要针对Java EE(Java Platform, Enterprise Edition)开发。Java是一种广泛使用的编程语言,特别是在服务器端和企业应用领域,Eclipse ...

    eclipse-jee-mars-1-win32-x86_64.rar

    《Eclipse JEE Mars for Windows 64位:Java开发者的首选工具》 Eclipse JEE Mars是一款专为Java开发者设计的集成开发环境(IDE),适用于Windows 64位操作系统。这个版本,即"eclipse-jee-mars-1-win32-x86_64.rar...

    jWAP-1.2-src.tar.gz_wap_wap stack

    1. **无线应用协议(WAP):** WAP是为了解决低带宽、高延迟的移动通信环境而设计的,它定义了一套协议栈,包括WSP(无线会话协议)、WTP(无线传输协议)、WAP网关等,使得手机可以通过GPRS、EDGE等早期移动网络访问...

    spring-tool-suite-3.8.4.RELEASE-e4.6.3-win32-x86_64

    8. **Java和Web开发工具**:作为Eclipse的定制版,STS包含了完整的Java和Web开发工具集,如JDT(Java Development Tools)和WTP(Web Tools Platform),可以创建、调试和测试Java和Web应用程序。 9. **插件扩展**...

    eclipse-inst-jre-win64.zip

    《Eclipse开发工具详解及其在Java后端与前端开发中的应用》 Eclipse,作为一款全球范围内广受欢迎的开源集成开发环境(IDE),是Java开发者的重要工具,尤其在后端开发领域更是不可或缺。"eclipse-inst-jre-win64....

    eclipse-jee-luna-SR2-win32-x86_64.rar

    Eclipse Luna还支持JPA(Java Persistence API)、JSF(JavaServer Faces)、EJB(Enterprise JavaBeans)等技术,为开发复杂的分布式企业应用提供了一站式解决方案。 除此之外,Luna版本的Eclipse还包含了Git版本...

    eclipse-jee-2020-12-R-win32-x86_64.zip

    此外,Eclipse的调试器可以帮助开发者快速定位和解决问题。 总的来说,Eclipse是一个强大的Java开发工具,尤其适合Java EE应用的开发。通过其丰富的功能和插件生态系统,开发者可以构建复杂的软件系统,并且在各个...

    eclipse-jee-mars-1-win32-x86_64.zip

    Eclipse JEE(Java Enterprise Edition)版本是Eclipse针对Java EE开发者的特殊定制,它集成了多种用于构建和测试企业级应用程序的工具,如Java服务器页面(JSP)、JavaServer Faces(JSF)、Java持久性API(JPA)、...

Global site tag (gtag.js) - Google Analytics