Hi,

I dont think that this is final solution for that problem.

The class finding search order is defined in OSGi:

https://docs.osgi.org/specification/osgi.core/7.0.0/framework.module.html#framework.module.overallsearchorder

That mean finding a class to be loaded will be initially done using the
boot delegation (Step 2 in this case). If defined correctly the
following will happen:

Java 1.8 - delegate to parent class loader an load javax.annotation from
there (no matter, if you have an bundle provided for that package)

Java 11 - cannot find javax.annotation over boot-delegation, go on with
Import-Package or Require-Bundle

Either provide a org.osgi.framework.bootdelegation=javax.* as property
to activate boot-delegation or you can use the existing profiles instead.

The Profiles are defined in Equinox:

https://github.com/eclipse/rt.equinox.framework/blob/master/bundles/org.eclipse.osgi/JavaSE-1.8.profile

You can find the property: org.osgi.framework.bootdelegation there with
a definition for javax.*

To make Equinox use this profile (I dont know, if this happens by
default) via launcher, you should provide the
osgi.java.profile=file:/<your-path>/JavaSE-1.8.profile

If you take the profile, then you have to additionally provide the
property: osgi.java.profile.bootdelegation=override, so that Equinox
takes the profile boot delegation entries. instead of already defined ones

With the correct boot-delegation configuration, always that same class
loader will be taken for this constellation, no matter, if in Java 1.8
or 11. The same applies to JAXB problems.

https://wiki.eclipse.org/Equinox_Boot_Delegation


Regards,

Mark


Am 21.08.20 um 22:43 schrieb Brian de Alwis:
Unfortunately javax.annotation /package-uses/ issues have returned
<https://bugs.eclipse.org/bugs/show_bug.cgi?id=566085> :(

The effort to replace the no-longer maintained Spotify Docker
<https://bugs.eclipse.org/bugs/show_bug.cgi?id=558284>Client
<https://bugs.eclipse.org/bugs/show_bug.cgi?id=558284> (bug 558284)
<https://bugs.eclipse.org/bugs/show_bug.cgi?id=558284> introduced a
new version of the javax.annotation bundle into Orbit
<https://git.eclipse.org/r/c/orbit/orbit-recipes/+/161789> based on
Jakarta EE’s somewhat recently released javax.annotation bundle with
version 1.3.5
<https://search.maven.org/artifact/jakarta.annotation/jakarta.annotation-api/1.3.5/jar>.
 This bundle doesn’t use the same approach used for the
javax.annotation 1.2.0 bundle
<https://bugs.eclipse.org/bugs/show_bug.cgi?id=462686#c27> to use
import-what-you-export /and/ requiring system.bundle.

The issue only occurs on Java 8 and has been seen in the wild
<https://github.com/GoogleCloudPlatform/google-cloud-eclipse/issues/3623>.
 I suspect it has not been more widespread due to increased adoption
of Java 11.

I’ve pushed up a fix to the javax.annotation 1.3.5 bundle
<https://git.eclipse.org/r/c/orbit/orbit-recipes/+/167718>.  I think
the risk is small, but given that we’re in RC season, it would be good
to get some more eyes on this.

If you have concerns, please comment on Bug 566085
<https://bugs.eclipse.org/bugs/show_bug.cgi?id=566085>.

Brian.

_______________________________________________
equinox-dev mailing list
equinox-dev@eclipse.org
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/equinox-dev

--
Mark Hoffmann

E-Mail: mark.hoffm...@web.de

_______________________________________________
equinox-dev mailing list
equinox-dev@eclipse.org
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to