在 WebLogic 12 上部署 ear 文件的 JSF 错误

JSF error on deploying ear file on WebLogic 12

我正在使用 Weblogic 12.2.1.4 并在部署我的 ear 文件时遇到以下错误。 JSF 2.2 让我耳目一新。

Caused by: java.lang.NoSuchMethodError: javax.faces.application.Application.addSearchKeywordResolver(Ljavax/faces/component/search/SearchKeywordResolver;)V
        at org.primefaces.util.Jsf23Helper.addSearchKeywordResolvers(Jsf23Helper.java:27)
        at org.primefaces.webapp.PostConstructApplicationEventListener.processEvent(PostConstructApplicationEventListener.java:48)
        at javax.faces.event.SystemEvent.processListener(SystemEvent.java:108)
        at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2169)
        at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2142)
        at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:294)
        at javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:739)
        at com.sun.faces.config.ConfigManager.publishPostConfigEvent(ConfigManager.java:704)
        at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:270)
        at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:719)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:344)
        at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)
        at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
        at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
        at weblogic.servlet.internal.EventsManager.executeContextListener(EventsManager.java:251)
        at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:204)
        at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:191)
        at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1929)
        at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3191)
        at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1864)
        at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:919)
        at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
        at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356)
        at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)`enter code here`

方法“addSearchKeywordResolver”是 JSF 2.3 规范的一部分。 https://javaee.github.io/javaee-spec/javadocs/javax/faces/component/search/SearchKeywordResolver.html

因此,如果您想使用它,您必须在您的 ear 文件中包含 JSF 2.3 的依赖项。

如果 PrimeFaces 识别出其在 JSF2.3 上的 运行,则此方法将被调用。 如果此方法不可用,则您的类路径中可能有重复的依赖项(或类似 2.3 API 和 2.2 impl)