Ява.ленг.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. Переключение упаковки с банки на войну решило проблему.