NPE in javax.portlet.faces.GenericFacesPortlet.getBridgeClassName()NPE in javax.portlet.faces.GenericFacesPortlet.getBridgeClassName()https://liferay.dev/en/c/message_boards/find_thread?p_l_id=119785333&threadId=1195215252024-03-29T06:08:00Z2024-03-29T06:08:00ZRE: NPE in javax.portlet.faces.GenericFacesPortlet.getBridgeClassName()Neil Griffinhttps://liferay.dev/en/c/message_boards/find_message?p_l_id=119785333&messageId=1195597582020-07-07T20:06:07Z2020-07-07T20:06:07ZThanks for letting me know Clint. And thanks for using Liferay Faces! :-)Neil Griffin2020-07-07T20:06:07ZRE: NPE in javax.portlet.faces.GenericFacesPortlet.getBridgeClassName()Clint Wildehttps://liferay.dev/en/c/message_boards/find_message?p_l_id=119785333&messageId=1195352562020-07-03T22:42:05Z2020-07-03T22:42:05ZThanks Neil. I found that I had some old dependencies in the pom which were causing problems. It appears to be working now. Clint Wilde2020-07-03T22:42:05ZRE: NPE in javax.portlet.faces.GenericFacesPortlet.getBridgeClassName()Neil Griffinhttps://liferay.dev/en/c/message_boards/find_message?p_l_id=119785333&messageId=1195215572020-07-01T20:25:40Z2020-07-01T20:25:40ZHi Clint,<br />In these types of circumstances I typically recommend that you start with something that works and then compare that with what is not working.<br />To that end, I would recommend that you visit <a href="https://faces.liferay.dev/home/-/archetype-portlet/liferay-portal-version/7.3/jsf-version/2.2/component-suite/jsf/build-tool/maven">liferayfaces.org</a> and after selecting Liferay Version, JSF Version, and Component Suite from the dropdowns, copy the corresponding Maven archetype:generate command to your clipboard and then paste the command into a terminal window on your local.<br />Then, build the generated archetype with "mvn clean package" and copy the resulting WAR to $LIFERAY_HOME/deploy<br />If that works, then you can examine the pom.xml descriptor of the generated project and compare it with your existing pom.xml descriptor.<br />Kind Regards,<br />NeilNeil Griffin2020-07-01T20:25:40ZNPE in javax.portlet.faces.GenericFacesPortlet.getBridgeClassName()Clint Wildehttps://liferay.dev/en/c/message_boards/find_message?p_l_id=119785333&messageId=1195215242020-07-01T19:11:23Z2020-07-01T19:11:23ZI tried posting this question as a response to my other post that Neil answered before, but it was marked as spam, so I'm going to try posting again. <br />We are getting this NPE when we deploy a faces portlet:<br /><br />2020-06-30 14:54:08.931 ERROR [Refresh Thread: Equinox Container: 402a09bd-b355-472a-9a4e-609d3120ea9d][PortletBagFactory:214] java.lang.NullPointerException<br />java.lang.NullPointerException<br /> at javax.portlet.faces.GenericFacesPortlet.getBridgeClassName(GenericFacesPortlet.java:193)<br /> at javax.portlet.faces.GenericFacesPortlet.getBridge(GenericFacesPortlet.java:762)<br /> at javax.portlet.faces.GenericFacesPortlet.init(GenericFacesPortlet.java:448)<br /> at com.liferay.portlet.internal.InvokerPortletImpl.init(InvokerPortletImpl.java:248)<br /> at com.liferay.portal.monitoring.internal.portlet.MonitoringInvokerPortlet.init(MonitoringInvokerPortlet.java:151)<br /> at com.liferay.portlet.internal.PortletInstanceFactoryImpl.init(PortletInstanceFactoryImpl.java:278)<br /> at com.liferay.portlet.internal.PortletInstanceFactoryImpl.create(PortletInstanceFactoryImpl.java:181)<br /> at com.liferay.portal.kernel.portlet.PortletInstanceFactoryUtil.create(PortletInstanceFactoryUtil.java:48)<br /> at com.liferay.portlet.PortletBagFactory.create(PortletBagFactory.java:210)<br /> at com.liferay.portlet.PortletBagFactory.create(PortletBagFactory.java:108)<br /> at com.liferay.portal.service.impl.PortletLocalServiceImpl.initWAR(PortletLocalServiceImpl.java:923)<br /> at jdk.internal.reflect.GeneratedMethodAccessor828.invoke(Unknown Source)<br /> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br /> at java.base/java.lang.reflect.Method.invoke(Method.java:566)<br /> at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50)<br /> at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)<br /> at com.sun.proxy.$Proxy54.initWAR(Unknown Source)<br /> at com.liferay.portal.kernel.service.PortletLocalServiceUtil.initWAR(PortletLocalServiceUtil.java:457)<br /> at com.liferay.portal.deploy.hot.PortletHotDeployListener.doInvokeDeploy(PortletHotDeployListener.java:232)<br /> at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:97)<br /> at com.liferay.portal.deploy.hot.HotDeployImpl.doFireDeployEvent(HotDeployImpl.java:229)<br /> at com.liferay.portal.deploy.hot.HotDeployImpl.fireDeployEvent(HotDeployImpl.java:96)<br /> at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:27)<br /> at com.liferay.portal.kernel.servlet.PluginContextListener.fireDeployEvent(PluginContextListener.java:189)<br /> at com.liferay.portal.kernel.servlet.PluginContextListener.doPortalInit(PluginContextListener.java:179)<br /> at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:44)<br /> at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:75)<br /> at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:57)<br /> at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:55)<br /> at com.liferay.portal.kernel.servlet.PluginContextListener.contextInitialized(PluginContextListener.java:141)<br /> at com.liferay.portal.kernel.servlet.SecurePluginContextListener.contextInitialized(SecurePluginContextListener.java:152)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.adapter.ServletContextListenerExceptionAdapter._initializeContext(ServletContextListenerExceptionAdapter.java:119)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.adapter.ServletContextListenerExceptionAdapter.contextInitialized(ServletContextListenerExceptionAdapter.java:99)<br /> at jdk.internal.reflect.GeneratedMethodAccessor170.invoke(Unknown Source)<br /> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br /> at java.base/java.lang.reflect.Method.invoke(Method.java:566)<br /> at org.eclipse.equinox.http.servlet.internal.registration.ListenerRegistration$EventListenerInvocationHandler.invoke(ListenerRegistration.java:143)<br /> at com.sun.proxy.$Proxy433.contextInitialized(Unknown Source)<br /> at org.eclipse.equinox.http.servlet.internal.context.ContextController.doAddListenerRegistration(ContextController.java:350)<br /> at org.eclipse.equinox.http.servlet.internal.context.ContextController.addListenerRegistration(ContextController.java:303)<br /> at org.eclipse.equinox.http.servlet.internal.customizer.ContextListenerTrackerCustomizer.addingService(ContextListenerTrackerCustomizer.java:71)<br /> at org.eclipse.equinox.http.servlet.internal.customizer.ContextListenerTrackerCustomizer.addingService(ContextListenerTrackerCustomizer.java:1)<br /> at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:943)<br /> at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)<br /> at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)<br /> at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)<br /> at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:903)<br /> at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)<br /> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:891)<br /> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804)<br /> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)<br /> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228)<br /> at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469)<br /> at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:487)<br /> at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:1004)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WabBundleProcessor.initListeners(WabBundleProcessor.java:625)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WabBundleProcessor.init(WabBundleProcessor.java:231)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WebBundleDeployer._initWabBundle(WebBundleDeployer.java:159)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WebBundleDeployer.doStart(WebBundleDeployer.java:88)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WabFactory$WABExtension.start(WabFactory.java:113)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WabFactory.addingBundle(WabFactory.java:66)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WabFactory.addingBundle(WabFactory.java:48)<br /> at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475)<br /> at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:1)<br /> at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)<br /> at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)<br /> at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)<br /> at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)<br /> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)<br /> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)<br /> at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:230)<br /> at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:137)<br /> at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:129)<br /> at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:191)<br /> at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)<br /> at org.eclipse.osgi.container.Module.doStart(Module.java:578)<br /> at org.eclipse.osgi.container.Module.start(Module.java:449)<br /> at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:468)<br /> at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:777)<br /> at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:768)<br /> at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:538)<br /> at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:484)<br /> at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:1028)<br /> at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1409)<br /> at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1)<br /> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)<br /> at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)<br />2020-06-30 14:54:08.934 ERROR [Refresh Thread: Equinox Container: 402a09bd-b355-472a-9a4e-609d3120ea9d][PortletBagFactory:214] java.lang.NullPointerException<br />java.lang.NullPointerException<br /> at javax.portlet.faces.GenericFacesPortlet.getBridgeClassName(GenericFacesPortlet.java:193)<br /> at javax.portlet.faces.GenericFacesPortlet.getBridge(GenericFacesPortlet.java:762)<br /> at javax.portlet.faces.GenericFacesPortlet.init(GenericFacesPortlet.java:448)<br /> at com.liferay.portlet.internal.InvokerPortletImpl.init(InvokerPortletImpl.java:248)<br /> at com.liferay.portal.monitoring.internal.portlet.MonitoringInvokerPortlet.init(MonitoringInvokerPortlet.java:151)<br /> at com.liferay.portlet.internal.PortletInstanceFactoryImpl.init(PortletInstanceFactoryImpl.java:278)<br /> at com.liferay.portlet.internal.PortletInstanceFactoryImpl.create(PortletInstanceFactoryImpl.java:181)<br /> at com.liferay.portal.kernel.portlet.PortletInstanceFactoryUtil.create(PortletInstanceFactoryUtil.java:48)<br /> at com.liferay.portlet.PortletBagFactory.create(PortletBagFactory.java:210)<br /> at com.liferay.portlet.PortletBagFactory.create(PortletBagFactory.java:108)<br /> at com.liferay.portal.service.impl.PortletLocalServiceImpl.initWAR(PortletLocalServiceImpl.java:923)<br /> at jdk.internal.reflect.GeneratedMethodAccessor828.invoke(Unknown Source)<br /> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br /> at java.base/java.lang.reflect.Method.invoke(Method.java:566)<br /> at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50)<br /> at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)<br /> at com.sun.proxy.$Proxy54.initWAR(Unknown Source)<br /> at com.liferay.portal.kernel.service.PortletLocalServiceUtil.initWAR(PortletLocalServiceUtil.java:457)<br /> at com.liferay.portal.deploy.hot.PortletHotDeployListener.doInvokeDeploy(PortletHotDeployListener.java:232)<br /> at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:97)<br /> at com.liferay.portal.deploy.hot.HotDeployImpl.doFireDeployEvent(HotDeployImpl.java:229)<br /> at com.liferay.portal.deploy.hot.HotDeployImpl.fireDeployEvent(HotDeployImpl.java:96)<br /> at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:27)<br /> at com.liferay.portal.kernel.servlet.PluginContextListener.fireDeployEvent(PluginContextListener.java:189)<br /> at com.liferay.portal.kernel.servlet.PluginContextListener.doPortalInit(PluginContextListener.java:179)<br /> at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:44)<br /> at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:75)<br /> at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:57)<br /> at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:55)<br /> at com.liferay.portal.kernel.servlet.PluginContextListener.contextInitialized(PluginContextListener.java:141)<br /> at com.liferay.portal.kernel.servlet.SecurePluginContextListener.contextInitialized(SecurePluginContextListener.java:152)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.adapter.ServletContextListenerExceptionAdapter._initializeContext(ServletContextListenerExceptionAdapter.java:119)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.adapter.ServletContextListenerExceptionAdapter.contextInitialized(ServletContextListenerExceptionAdapter.java:99)<br /> at jdk.internal.reflect.GeneratedMethodAccessor170.invoke(Unknown Source)<br /> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br /> at java.base/java.lang.reflect.Method.invoke(Method.java:566)<br /> at org.eclipse.equinox.http.servlet.internal.registration.ListenerRegistration$EventListenerInvocationHandler.invoke(ListenerRegistration.java:143)<br /> at com.sun.proxy.$Proxy433.contextInitialized(Unknown Source)<br /> at org.eclipse.equinox.http.servlet.internal.context.ContextController.doAddListenerRegistration(ContextController.java:350)<br /> at org.eclipse.equinox.http.servlet.internal.context.ContextController.addListenerRegistration(ContextController.java:303)<br /> at org.eclipse.equinox.http.servlet.internal.customizer.ContextListenerTrackerCustomizer.addingService(ContextListenerTrackerCustomizer.java:71)<br /> at org.eclipse.equinox.http.servlet.internal.customizer.ContextListenerTrackerCustomizer.addingService(ContextListenerTrackerCustomizer.java:1)<br /> at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:943)<br /> at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)<br /> at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)<br /> at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)<br /> at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:903)<br /> at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)<br /> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:891)<br /> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804)<br /> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)<br /> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228)<br /> at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469)<br /> at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:487)<br /> at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:1004)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WabBundleProcessor.initListeners(WabBundleProcessor.java:625)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WabBundleProcessor.init(WabBundleProcessor.java:231)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WebBundleDeployer._initWabBundle(WebBundleDeployer.java:159)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WebBundleDeployer.doStart(WebBundleDeployer.java:88)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WabFactory$WABExtension.start(WabFactory.java:113)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WabFactory.addingBundle(WabFactory.java:66)<br /> at com.liferay.portal.osgi.web.wab.extender.internal.WabFactory.addingBundle(WabFactory.java:48)<br /> at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475)<br /> at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:1)<br /> at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)<br /> at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)<br /> at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)<br /> at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)<br /> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)<br /> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)<br /> at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:230)<br /> at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:137)<br /> at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:129)<br /> at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:191)<br /> at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)<br /> at org.eclipse.osgi.container.Module.doStart(Module.java:578)<br /> at org.eclipse.osgi.container.Module.start(Module.java:449)<br /> at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:468)<br /> at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:777)<br /> at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:768)<br /> at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:538)<br /> at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:484)<br /> at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:1028)<br /> at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1409)<br /> at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1)<br /> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)<br /> at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)<br /><br />Here are the dependencies in our pom file:<table><tr><td></td><td><javax.faces.faces-api.version>2.2</javax.faces.faces-api.version></td></tr><tr><td></td><td><org.glassfish.javax.faces.version>2.2.20</org.glassfish.javax.faces.version></td></tr><tr><td></td><td><com.liferay.faces.bridge.ext.version>5.0.5</com.liferay.faces.bridge.ext.version></td></tr><tr><td></td><td></td></tr><tr><td></td><td><!-- Not needed, but still in our pom - should we remove these? --></td></tr><tr><td></td><td><com.sun.faces.version>2.2.20</com.sun.faces.version></td></tr><tr><td></td><td><com.liferay.faces.bridge.api.version>4.1.0</com.liferay.faces.bridge.api.version></td></tr><tr><td></td><td><com.liferay.faces.portal.version>4.0.0</com.liferay.faces.portal.version><br />I looked at the source, here: <a href="https://github.com/liferay/liferay-faces-bridge-api/blob/master/bridge-api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java">https://github.com/liferay/liferay-faces-bridge-api/blob/master/bridge-api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java</a> and I see this comment above getBridgeClassName()<br /><table><tr><td>/**</td></tr><tr><td></td><td>* Returns the className of the bridge implementation this portlet uses. Subclasses override to alter the default</td></tr><tr><td></td><td>* behavior. Default implementation first checks for a portlet context init parameter:</td></tr><tr><td></td><td>* javax.portlet.faces.BridgeImplClass. If it doesn't exist then it looks for the resource file</td></tr><tr><td></td><td>* "META-INF/services/javax.portlet.faces.Bridge" using the current threads classloader and extracts the classname</td></tr><tr><td></td><td>* from the first line in that file.</td></tr><tr><td></td><td>*</td></tr><tr><td></td><td>* @return the class name of the Bridge class the GenericFacesPortlet uses. <code>null</code> if it can't be</td></tr><tr><td></td><td>* determined.</td></tr><tr><td></td><td>*/</td></tr><tr><td></td><td>public String getBridgeClassName() {</td></tr></table><br />So it appears we need to set up the className in a config file. Unfortunately, I don't know