1

Deployment of Java Portlet to Liferay 7.2 fails due to strange unresolved dependency issue

I want to build a Portlet based on LR 7.2 (provided CE bunlde with TC9.0.17) on Java 8_u202 using Maven.

I get the a huge stacktrace in the tomcat log, when I copy the portlet WAR to liferay/deploy:

All but the last depenency are 'resolution=optional' (which renders them irrelevant ?).

I suspect '(&(osgi.ee=JavaSE)(version=9)' being the issue here. Where does the reference to Java 9 come from? My POM doesn't mention Java9 and I don't have it installed on my system.

Unresolved requirement: Import-Package: angularBeans.api; resolution:="optional"_ 
Unresolved requirement: Import-Package: com.caucho.server.resin; resolution:="optional"_
Unresolved requirement: Import-Package: com.google.template.soy; resolution:="optional"_
Unresolved requirement: Import-Package: com.google.zxing.qrcode.decoder; resolution:="optional"
Unresolved requirement: Import-Package: com.hazelcast.config; resolution:="optional"_ Unresolved requirement: Import-Package: com.hazelcast.core; resolution:="optional"_ Unresolved requirement: Import-Package: com.ibm.websphere.jtaextensions; resolution:="optional"_
£Unresolved requirement: Import-Package: com.icesoft.faces.application; resolution:="optional"_ 
Unresolved requirement: Import-Package: com.liferay.faces.alloy.component.column; resolution:="optional"_ 
Unresolved requirement: Import-Package: com.liferay.faces.metal.component.inputtext; resolution:="optional"_
Unresolved requirement: Import-Package: com.liferay.faces.portal.context; resolution:="optional"_ 
Unresolved requirement: Import-Package: com.liferay.faces.showcase.dto; resolution:="optional"_ 
Unresolved requirement: Import-Package: com.lowagie.text; resolution:="optional"_ Unresolved requirement: Import-Package: com.lowagie.text.pdf; resolution:="optional"_ Unresolved requirement: Import-Package: com.rometools.rome.feed.synd; resolution:="optional"_
Unresolved requirement: Import-Package: com.rometools.rome.io; resolution:="optional"_ Unresolved requirement: Import-Package: com.squareup.javapoet; resolution:="optional"_ Unresolved requirement: Import-Package: com.sun.jdi; resolution:="optional"_
Unresolved requirement: Import-Package: com.sun.jdi.connect; resolution:="optional"_ Unresolved requirement: Import-Package: com.sun.jdi.event; resolution:="optional"_ Unresolved requirement: Import-Package: com.sun.jdi.request; resolution:="optional"_ Unresolved requirement: Import-Package: com.sun.jna; resolution:="optional"_
Unresolved requirement: Import-Package: com.sun.jna.platform.win32; resolution:="optional"_
Unresolved requirement: Import-Package: com.sun.jna.ptr; resolution:="optional"_ Unresolved requirement: Import-Package: com.sun.jna.win32; resolution:="optional"_ Unresolved requirement: Import-Package: com.sun.msv.datatype; resolution:="optional"_ Unresolved requirement: Import-Package: com.sun.msv.datatype.xsd; resolution:="optional"_
Unresolved requirement: Import-Package: com.sun.tools.attach; resolution:="optional"_ Unresolved requirement: Import-Package: com.swabunga.spell.engine; resolution:="optional"
Unresolved requirement: Import-Package: com.swabunga.spell.event; resolution:="optional"_ 
Unresolved requirement: Import-Package: de.beyondjava.angularFaces.core; resolution:="optional"_ 
Unresolved requirement: Import-Package: de.larmic.butterfaces.component.partrenderer; resolution:="optional"_
Unresolved requirement: Import-Package: javax.ejb; resolution:="optional"_
Unresolved requirement: Import-Package: javax.security.jacc; resolution:="optional"_ Unresolved requirement: Import-Package: jdk.internal.misc; resolution:="optional"_ Unresolved requirement: Import-Package: jdk.internal.module; resolution:="optional"_ Unresolved requirement: Import-Package: net.bootsfaces; resolution:="optional"_ Unresolved requirement: Import-Package: net.fortuna.ical4j.model; resolution:="optional"_ Unresolved requirement: Import-Package: net.fortuna.ical4j.model.property; resolution:="optional"_
Unresolved requirement: Import-Package: net.glxn.qrgen; resolution:="optional"_ Unresolved requirement: Import-Package: net.glxn.qrgen.image; resolution:="optional"_ Unresolved requirement: Import-Package: org.apache; resolution:="optional"_
Unresolved requirement: Import-Package: org.apache.axis.tools.ant.wsdl; resolution:="optional"_
Unresolved requirement: Import-Package: org.apache.commons.digester; resolution:="optional"_
Unresolved requirement: Import-Package: org.apache.deltaspike.core.util; resolution:="optional"_
Unresolved requirement: Import-Package: org.apache.jasper.compiler; resolution:="optional"_
Unresolved requirement: Import-Package: org.apache.logging.log4j; resolution:="optional"_ Unresolved requirement: Import-Package: org.apache.logging.log4j.message; resolution:="optional"_ 
Unresolved requirement: Import-Package: org.apache.logging.log4j.spi; resolution:="optional"_ 
Unresolved requirement: Import-Package: org.apache.myfaces.shared.renderkit.html.util; resolution:="optional"_ 
Unresolved requirement: Import-Package: org.apache.myfaces.util; resolution:="optional"_ Unresolved requirement: Import-Package: org.apache.myfaces.view.facelets; resolution:="optional"_ 
Unresolved requirement: Import-Package: org.apache.pluto.container; resolution:="optional"_ 
Unresolved requirement: Import-Package: org.apache.poi.hssf.usermodel; resolution:="optional"_ 
Unresolved requirement: Import-Package: org.apache.poi.hssf.util; resolution:="optional"_ Unresolved requirement: Import-Package: org.apache.poi.ss.usermodel; resolution:="optional"_
Unresolved requirement: Import-Package: org.apache.poi.ss.util; resolution:="optional"_ Unresolved requirement: Import-Package: org.apache.poi.xssf.streaming; resolution:="optional"_ 
Unresolved requirement: Import-Package: org.apache.poi.xssf.usermodel; resolution:="optional"_ 
Unresolved requirement: Import-Package: org.apache.tomcat.util.buf; resolution:="optional"_ Unresolved requirement: Import-Package: org.apache.webbeans.util; resolution:="optional"_ Unresolved requirement: Import-Package: org.apache.xmlbeans.impl.common; resolution:="optional"_ Unresolved requirement: Import-Package: org.atmosphere.annotation; resolution:="optional"_ Unresolved requirement: Import-Package: org.atmosphere.client; resolution:="optional"_ Unresolved requirement: Import-Package: org.atmosphere.config; resolution:="optional"_ Unresolved requirement: Import-Package: org.atmosphere.config.managed; resolution:="optional"_ Unresolved requirement: Import-Package: org.atmosphere.config.service; resolution:="optional"_ Unresolved requirement: Import-Package: org.atmosphere.cpr; resolution:="optional"_ Unresolved requirement: Import-Package: org.atmosphere.handler; resolution:="optional"_ Unresolved requirement: Import-Package: org.atmosphere.inject; resolution:="optional"_ Unresolved requirement: Import-Package: org.atmosphere.inject.annotation; resolution:="optional"_
Unresolved requirement: Import-Package: org.atmosphere.interceptor; resolution:="optional"_ Unresolved requirement: Import-Package: org.atmosphere.util; resolution:="optional"_ Unresolved requirement: Import-Package: org.eclipse.jetty.util; resolution:="optional"_ Unresolved requirement: Import-Package: org.gjt.xpp; resolution:="optional"_
Unresolved requirement: Import-Package: org.glassfish.api.web; resolution:="optional"_
Unresolved requirement: Import-Package: org.glassfish.hk2.osgiresourcelocator; resolution:="optional"_ Unresolved requirement: Import-Package: org.highfaces.util; resolution:="optional"_ Unresolved requirement: Import-Package: org.icefaces.application; resolution:="optional"_ Unresolved requirement: Import-Package: org.jboss.logmanager; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j.impl; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j.impl.codabar; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j.impl.code128; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j.impl.code39; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j.impl.datamatrix; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j.impl.int2of5; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j.impl.pdf417; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j.impl.postnet; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j.impl.upcean; resolution:="optional"_
Unresolved requirement: Import-Package: org.krysalis.barcode4j.output; resolution:="optional"_ Unresolved requirement: Import-Package: org.krysalis.barcode4j.output.bitmap; resolution:="optional"_
Unresolved requirement: Import-Package: org.krysalis.barcode4j.output.svg; resolution:="optional"_ Unresolved requirement: Import-Package: org.mortbay.jetty.annotations; resolution:="optional"_
Unresolved requirement: Import-Package: org.mortbay.jetty.handler; resolution:="optional"_
Unresolved requirement: Import-Package: org.mortbay.jetty.plus.annotation; resolution:="optional"_ Unresolved requirement: Import-Package: org.mortbay.jetty.webapp; resolution:="optional"_ Unresolved requirement: Import-Package: org.objectweb.jonas_tm; resolution:="optional"_ Unresolved requirement: Import-Package: org.omnifaces.util; resolution:="optional"_ Unresolved requirement: Import-Package: org.osgi.service.jdbc; resolution:="optional"_ Unresolved requirement: Import-Package: org.primefaces.extensions.util; resolution:="optional"_
Unresolved requirement: Import-Package: org.relaxng.datatype; resolution:="optional"_ Unresolved requirement: Import-Package: org.richfaces; resolution:="optional"_
Unresolved requirement: Import-Package: org.richfaces.event; resolution:="optional"_ Unresolved requirement: Import-Package: org.richfaces.model; resolution:="optional"_ Unresolved requirement: Import-Package: org.richfaces.util; resolution:="optional"_ Unresolved requirement: Import-Package: org.xmlpull.v1; resolution:="optional"_ Unresolved requirement: Import-Package: weblogic.deploy.api.shared; resolution:="optional"_
Unresolved requirement: Import-Package: com.liferay.portal.service; resolution:="optional"_ 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=JavaSE)(version=9))"_ [Sanitized] at org.eclipse.osgi.container.Module.start(Module.java:444) at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:428) at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1264) at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1237) at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520) at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316)

Thanks for your help... Regards, Claus

Claus L
  • 21
  • 2
  • I set CATALINA_OPTS like this, as mentioned here: https://stackoverflow.com/questions/24669940/java-8-missing-required-capability-require-capability-osgi-ee-filter-osg But this didn't change anything. The error remains – Claus L Jul 23 '19 at 08:17
  • having same issue so look forward to some assistance. my portlet was developed for Liferay 6.2 and converted to 7.1. was hoping that it could also be loaded into 7.2. – rocketboy2000 Aug 16 '19 at 17:24
  • i fixed my similar issue by just doing a maven clean and re packaging. – rocketboy2000 Aug 21 '19 at 17:32

1 Answers1

3

Optional packages shouldn't be an issue indeed. However the Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=9))" is. It basically tells the resolver that a bundle needs Java 9 (or higher) runtime.

It is hard to say how exactly this requirement made it into your bundle. You say you deploy a WAR file which means it is converted to bundle (WAB) by the WAB Generator. I'm not quite sure what exactly it takes into account but here is what may be causing this:

  • the WAR was somehow indeed compiled with Java 9
  • WEB-INF/liferay-plugin-package.properties file in the WAR contains explicit instruction to add this requirement (copy/paste issue?)
  • something else (dependency?) in the WAR file makes WAB Generator add the requirement

A possible workaround may be to add -noee=true instruction in the WEB-INF/liferay-plugin-package.properties. I've never done this myself but if the documentation is correct it should be passed to Bnd and the requirement should not be added to the bundle. Of course if there is indeed Java version mismatch this will only result in other errors.

Milen Dyankov
  • 2,972
  • 14
  • 25
  • I'd use the `-noee=true` suggestion @milen-dyankov suggested. – Ray Aug 22 '19 at 14:18
  • Adding a new line with `-noee=true` to the end of liferay-plugin-package.properties solved the issue for me. Many thanks! – Matze Jun 23 '22 at 07:42