当前位置: 首页 > 面试题库 >

java.lang.IllegalStateException:找不到工厂javax.faces.context.FacesContextFactory的备份

陈朗
2023-03-14
问题内容

我创建了hello world JSF项目,但是当我将其部署到Tomcat 7时,会遇到以下异常:

java.lang.IllegalStateException: Could not find backup for factory javax.faces.context.FacesContextFactory. 
    at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1135)
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:379)
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:350)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

我已将这些JAR添加到我的项目中:

  • jstl-1.2.jar
  • javax.faces-api-2.2.jar

这是怎么引起的,我该如何解决?


问题答案:

IllegalStateException:找不到工厂javax.faces.context.FacesContextFactory的备份

如果将“备份”替换为“实现”,则更容易理解此异常。最终归结为 “我找到了JSF API,但是在与我找到JSF
API相同的类路径上下文中,没有JSF隐含”
。换句话说,您在运行时类路径中的某个地方有一个JSF API,该JSF API没有任何JSF
impl附带。例如,在相同的classpath上下文中具有jsf-api.jar或什至javaee.jar没有任何jsf- impl.jar或没有javax.faces.jar。请注意,Web应用程序可以具有多个类路径上下文。根据类加载规则,JSF
impl必须位于与第一个遇到的JSF API完全相同的位置,并且您需要绝对确保没有重复和/或冲突的版本。

在您的特定情况下,

我已经将此jar添加到我的项目中:jstl-1.2.jarjavax.faces-api-2.2.jar

javax.faces-api-2.2.jar单是不正确的。有两个问题:

  • 这就是“蓝图” API JAR,旨在提供给诸如Mojarra和MyFaces之类的JSF实现者。
  • 您忘记了JSF实现JAR。

如果您想使用Mojarra,请按照其README中的安装说明进行操作。在您的特定情况下,请摆脱此情况,javax.faces- api-2.2.jar然后将最新值javax.faces-2.x.x.jar放在/WEB- INF/lib或中pom.xml,此异常应消失。



 类似资料:
  • 我在使用Spring Boot和JSF时遇到了一些问题。servlet似乎可以正确启动,但当我试图访问资源时,会出现以下异常 我的应用程序类如下

  • 我有一个laravel应用程序与护照安装管理api认证。我试图写一些测试,但我无法创建一个客户端根据laravel上的文档。我已经谷歌了类似的SO答案,但他们都建议使用我正在做的setUp和tearDown方法。当我进行测试时 我怎样才能让它工作? 下面是我的代码。我已经包括了passport包中的客户机模型,我正在使用类似SO答案中建议的设置和拆卸方法。 我已经尝试了和。

  • 我正在编写一个应用程序来打开蓝牙,扫描附近可发现的蓝牙设备,包括配对和未配对,以便将它们添加到列表中。 这是我的代码: 代码看起来很好,但它没有找到或添加任何附近的设备到列表中,当我退出应用程序时,我得到以下异常日志: 有解决问题的办法吗? 要将配对设备添加到列表视图,我必须添加一个按钮并将其与scan()方法相关联。这很令人沮丧,当我点击“打开”按钮时,我想填充列表。此外,仍然需要找到未配对的设

  • 我尝试使用 Websphere 8.5 完整配置文件将应用程序转换为 Liberty 配置文件,但我遇到了有关不兼容的问题。 无法找到初始上下文工厂 我知道班级的位置com.ibm.ws.ejb.thinclient_8.0.0.jar在完整的配置文件中,但我不能在Liberty配置文件中找到相关的,还有一件事,因为我正在做维护应用程序,所以班级要看看。 com . IBM . WebSphere