-
Type:
Bug
-
Status: Closed
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: liferay-faces-3.0.3-legacy-ga4, liferay-faces-3.0.3-ga4, liferay-faces-3.1.3-ga4
-
Component/s: Liferay Faces Alloy / Showcase / Tests
-
Labels:None
This error occurs when Mojarra tries to identify all of the component suite renderers during startup. When running under Pluto (or as a webapp), the com.liferay.portal.theme.ThemeDisplay class is not present since it is specific to Liferay Portal. Since Mojarra is scanning method signatures for annotations, it throws a NoClassDefFoundError when it encounters the ScriptRendererCompat.isInline(ThemeDisplay) method:
public abstract class ScriptRendererCompat extends Renderer { protected boolean isInline(ThemeDisplay themeDisplay) { return (themeDisplay.isIsolated() || themeDisplay.isStateExclusive()); } ... }
The solution is to refactor the method signature so that the argument is not a Liferay-specific class.
Note that the exception will not get thrown with Liferay Faces 3.1.3-ga4 – the bug only manifested itself when the fix for FACES-1780 was committed during the development of Liferay Faces 3.1.4-ga5.