For this 1 JAR (cxf-rt-frontend-jaxrs-3.1.10.jar) - have you tried to wrap this one in a separate OSGi bundle and deploy it?
Can you tell me how to? Do I need to rewrite the manifest as well?
The exports of the javax.annotation package has not changed from AEM 6.2 and AEM 6.4, they are both exported from the system bundle and taken from the JRE.
That makes me wonder why you have the package "javax.annotation-api" installed at all, even in AEM 6.2 it shouldn't be necessary to have it deployed.
I created an OSGi that contains just the cxf-rt-frontend-jaxrs-3.1.10.jar. It deployed without an issue and did not effect other bundles. Look here...
Thank you so much for the help and video. I will try wrapping it now.
Though I am not sure how this will help as this bundles install ok and is active for me.
Problem is after installing this other 'Adobe' bundles break.
0) Start AEM 6.4 (not 6.2)
1) install the cxf-rt-frontend-jaxrs-3.1.10.jar bundle.
2) check its active.
3) restart AEM
4) Check the logs and bundles
5) most of the Adobe ones are in Resolved or Installed state.
On AEM 6.4 this is what I get: http://localhost:9503/system/console/depfinder
Package Version Exported by
javax.annotation 0.0.0.1_008_JavaSE org.apache.felix.framework (0)
But the CXF bundles need 1.3 version of javax.annotation:
The felix framework exports the packages from the classpath; in that case javax.annotation. And all packages are exported with this "default" version no matter what version of the standard the rt.jar is actually implementing. That's unfortunate in your case.
You encountered this as a problem when switching from AEM 6.2 to AEM 6.4; between these releases the OSGI framework has changed as well, maybe the order of resolution has changed in case duplicates are present, not sure. I would recommend to post this question on the firstname.lastname@example.org mailinglist. There you can reach OSGI specialists which know the details much better than we do.
Yes, had to remove the ref to this bundle from everywhere else. And then embed to only where it was required.