Ich habe mein Hallo-Welt-JSF-Projekt erstellt, aber bei der Bereitstellung auf Tomcat 7 erhalte ich folgende Ausnahme:
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)
Ich habe diese JARs zu meinem Projekt hinzugefügt:
jstl-1.2.jar
javax.faces-api-2.2.jar
Wie wird das verursacht und wie kann ich es lösen?
IllegalStateException: Es wurde keine Sicherung für die Factory javax.faces.context.FacesContextFactory gefunden
Diese Ausnahme ist einfacher zu verstehen, wenn Sie "Sicherung" durch "Implementierung" ersetzen. Letztendlich läuft es auf "Ich habe die JSF-API gefunden, aber nirgends ein JSF-Impl in demselben Klassenpfad-Kontext, in dem ich die JSF-API gefunden habe". Mit anderen Worten, Sie haben eine JSF-API irgendwo im Laufzeitklassenpfad, die von keinem JSF-Impl begleitet wird. Z.B. mit einem jsf-api.jar
oder sogar javaee.jar
ohne jsf-impl.jar
oder javax.faces.jar
im selben Klassenpfad-Kontext.
In Ihrem speziellen Fall
Ich hatte diese Gläser zu meinem Projekt hinzugefügt:
jstl-1.2.jar
undjavax.faces-api-2.2.jar
Der javax.faces-api-2.2.jar
alleine ist nicht richtig. Es gibt zwei Probleme:
Sofern Sie Mojarra verwenden möchten, befolgen Sie die Installationsanweisungen in der README . Entfernen Sie in Ihrem speziellen Fall diesen javax.faces-api-2.2.jar
und geben Sie den neuesten javax.faces-2.x.x.jar
in /WEB-INF/lib
oder pom.xml
ein. Diese Ausnahme sollte verschwinden.
Dank My colleuge @Lookub bei stackoverflow fügte er einen weiteren Apache-Server hinzu und stellte den Port als 8084 ein, alles kompiliert. Als Beispiel verwenden wir netbeans 8.2. Sie können dies im Menü Dienste >> Server tun. Hoffe das hilft.
Sie müssen den weblogic-application.xml
des Ohrprojekts in ändern
<?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>
Die folgenden Glasversionsnummern müssen genau übereinstimmen: