在 WebLogic 12 上部署 ear 文件时出现 JSF 错误

Posted

技术标签:

【中文标题】在 WebLogic 12 上部署 ear 文件时出现 JSF 错误【英文标题】:JSF error on deploying ear file on WebLogic 12 【发布时间】:2022-01-12 04:39:23 【问题描述】:

我正在使用 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`

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于在 WebLogic 12 上部署 ear 文件时出现 JSF 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Weblogic 12c 中部署 EAR 应用程序

将ear文件部署到weblogic 10g

Weblogic 10.3.4 上的 Exploded EAR 部署失败

Weblogic:在ejb-jar文件中找不到EJB

weblogic在阶段找不到.ear,但它在文件系统上

weblogic.socket.Muxer 使用 100% cpu