web-dev-qa-db-fra.com

java.lang.IllegalStateException: impossible de trouver la sauvegarde pour la fabrique javax.faces.context.FacesContextFactory

J'ai créé mon projet JSF hello world, mais lorsque je déploie sur Tomcat 7, j'obtiens cette exception:

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)

J'ai ajouté ces fichiers JAR à mon projet: 

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

Comment cela est-il causé et comment puis-je le résoudre?

12

IllegalStateException: impossible de trouver la sauvegarde pour la fabrique javax.faces.context.FacesContextFactory

Cette exception est plus facile à comprendre si vous remplacez "sauvegarde" par "implémentation". Cela se résume finalement à "J'ai trouvé l'API JSF, mais nulle part un JSF ne se trouve dans le même contexte de chemin de classe que celui où j'ai trouvé l'API JSF". En d'autres termes, vous avez une API JSF quelque part dans le classpath d'exécution qui n'est accompagnée d'aucune implémentation JSF. Par exemple. avoir un jsf-api.jar ou même javaee.jar sans aucun jsf-impl.jar ou javax.faces.jar dans le même contexte de chemin de classe. 

Dans votre cas particulier,

J'ai ajouté ce bocal à mon projet: jstl-1.2.jar et javax.faces-api-2.2.jar

Le javax.faces-api-2.2.jar seul n'est pas correct. Il y a 2 problèmes:

  • C’est le fichier JAR d’API "blueprint", destiné aux développeurs JSF tels que Mojarra et MyFaces .
  • Vous avez oublié le fichier JAR d'implémentation JSF.

Si vous souhaitez utiliser Mojarra, suivez les instructions d'installation dans son fichier README . Dans votre cas particulier, supprimez ce javax.faces-api-2.2.jar et mettez le dernier javax.faces-2.x.x.jar dans /WEB-INF/lib ou pom.xml et cette exception devrait disparaître.

Voir également:

21
BalusC

Grâce à My colleuge, @Lookub at stackoverflow, il a ajouté un autre serveur Apache et défini le port sur 8084, le tout étant compilé. En tant qu'ide, nous utilisons netbeans 8.2. Vous pouvez le faire dans le menu Services >> Serveurs. J'espère que cela t'aides. 

0
kayhan yüksel

Besoin de changer le weblogic-application.xml du projet ear en

<?xml version='1.0' encoding='UTF-8'?>
<weblogic-application xmlns:wls="http://xmlns.Oracle.com/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-application 
    http://www.bea.com/ns/weblogic/weblogic-application/1.0/weblogic-application.xsd">

    <prefer-application-packages>
        <package-name>org.opensaml.*</package-name>
        <package-name>org.slf4j.*</package-name>
        <package-name>antlr.*</package-name>        
    </prefer-application-packages>
    <prefer-application-resources>
        <resource-name>javax.faces.*</resource-name>
        <resource-name>com.Sun.faces.*</resource-name>
        <resource-name>com.bea.faces.*</resource-name>
        <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
        <resource-name>META-INF/services/com.Sun.faces.spi.FacesConfigResourceProvider</resource-name>
    </prefer-application-resources>
</weblogic-application>

Les numéros de version des pots suivants doivent correspondre exactement:

  • javax.faces-2.x.x.jar
  • jsf-api-2.x.x.jar
  • jsf-impl-2.x.x.jar
0
Ravi Kumar Sharma