Issue
-
When deploying a spring portlet WAR using JDK 17 or JDK 21, the following deployment error appears in the Liferay logs:
Unresolved requirement: Import-Package: com.liferay.portal.osgi.web.servlet.jsp.compiler; resolution:="optional"_ Unresolved requirement: Import-Package: com.liferay.portal.spring.context; resolution:="optional"_ Unresolved requirement: Require-Capability:osgi.ee; filter:="(osgi.ee=UNKNOWN)"_ [Sanitized]
Environment
- 2024.Q1
Resolution
-
Liferay DXP uses an OSGi-based framework that requires modules to specify their Java Execution Environment (
osgi.ee). However, WAR-based portlets lack this declaration. -
During deployment, Liferay tries to wrap the WAR as an OSGi bundle but fails due to the missing
osgi.eeversion, assigning it "UNKNOWN", which leads to deployment errors. - To prevent this error, disable OSGi execution environment validation by adding the following line to the
liferay-plugin-package.propertiesorbnd.bndfile:-noee: true
- Once the module is redeployed, the deployment should succeed without OSGi validation errors.