Ява.ленг.IllegalStateException: не удалось найти резервную копию для фабрики javax.сталкиваться.приложение.ApplicationFactory

Я использую этот :

  • Tomcat 7.0
  • JSF 2.0
  • JRE 7

но при попытке запустить мое приложение я получил следующее исключение:

java.lang.IllegalStateException: Could not find backup for factory javax.faces.application.ApplicationFactory. 
    at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1011)
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:343)
    at org.apache.myfaces.context.servlet.FacesContextImplBase.getApplication(FacesContextImplBase.java:159)
    at org.apache.myfaces.context.servlet.FacesContextImplBase.getELContext(FacesContextImplBase.java:210)
    at javax.faces.component.UIViewRoot.setLocale(UIViewRoot.java:1463)
    at org.apache.myfaces.webapp.AbstractFacesInitializer._createFacesContext(AbstractFacesInitializer.java:477)
    at org.apache.myfaces.webapp.AbstractFacesInitializer.initStartupFacesContext(AbstractFacesInitializer.java:449)
    at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:113)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

любые идеи, почему?

спасибо,

2 ответов


Это может произойти, если путь к классам среды выполнения вашего webapp загрязнен несколькими JSF impls / версиями. The org.apache.myfaces записи в трассировке стека говорят, что вы используете MyFaces. Таким образом, эта проблема предполагает, что у вас есть другая реализация JSF, такая как Mojarra в пути к классам среды выполнения webapp, которая конфликтует с ней. Это узнаваемо по jsf-api.jar или jsf-impl.jar или javax.faces.jar. Если вы удалите все из них, то эта проблема должна исчезнуть.

или, если вы действительно намеревались использовать Mojarra вместо MyFaces (вы не указали явно намеренный JSF impl / version в любом месте вашего вопроса, но вы просто в общих чертах указали спецификацию JSF, как в "JSF 2.0", поэтому, возможно, вы на самом деле не знали, что вы все делаете), тогда вы должны удалить myfaces-*.jar файлы из вашего webapp.

Читайте также:


дополняя ответ BalusC, я недавно получил эту ошибку при попытке запустить независимую банку с приложением Spring Boot, которое имеет JSF в качестве интерфейса с Spring-managed beans. Переключение упаковки с банки на войну решило проблему.