eclipse - 错误找不到工厂: javax. faces.context.FacesContextFactory

标签 eclipse jsf primefaces

我正在尝试使用 eclipse 运行示例 primefaces 3.1 应用程序。当我运行时,我收到以下异常。我已将 jSTL-1.0.2.jar、jsf-impl-2.0.3.jar、jsf-api-2.0.3.jar、primefaces-3.1.jar 放置在 WEb-INF/lib 文件夹下,index.jsf 放置在/WebContent。

Problem accessing /TestPrime/index.jsf. Reason: 

    java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory

Caused by:
javax.servlet.UnavailableException: java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
    at org.mortbay.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:415)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:458)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72)
    at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29)

我的web.xml如下:

<web-app version="2.5">
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

</web-app>

更新 1

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
     <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <mime-mapping>
        <extension>png</extension>
        <mime-type>image/png</mime-type>
    </mime-mapping>
    <welcome-file-list>
        <welcome-file>login.jsf</welcome-file>
    </welcome-file-list>    
</web-app>

最佳答案

这是杰蒂的错。它不知何故没有执行在 JSF TLD 文件中注册的 JSF ConfigureListener

将以下条目添加到您的网络应用的 web.xml 中以手动注册它:

<listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>

另请参阅:

关于eclipse - 错误找不到工厂: javax. faces.context.FacesContextFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9273439/

相关文章:

java - PrimeFaces barChart 未显示

java - 字符编码不适用于 PrimeFaces CellEditor 组件

android - Eclipse add tabhost to project报错

jquery - 使用 JavaScript 向 JSF 发送 Ajax 请求

jsf - 如何在 Liberty Profile 中重现相同的 WAS ND 类加载器设置

JSF h :button or Primefaces p:button - target _blank

jsf - 使用 p :remoteCommand to update a p:dataTable

java - 线程中的异常“main java.lang.StringIndexOutOfBoundsException : String index out of range

java - 声明位置时出现运行时异常 - Android

mysql - eclipse 服务器应用程序不支持阿拉伯字符