Hello,
currently I'm trying to migrate a huge e4-RCP-application from JDK8 with FX to JDK11 with JavaFX11.
I'm using eclipse 2020-03 (4.15) and a nightly build of the efxclipse runtime in my targetplatform.
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
<repository location="http://download.eclipse.org/efxclipse/runtime-nightly/site"/>
<unit id="org.eclipse.fx.runtime.min.feature.feature.group" version="3.7.0.202008120501"/>
<unit id="org.eclipse.fx.target.feature.feature.group" version="3.7.0.202008120600"/>
</location>
I noticed that the following MANIFEST.MF entries ("Java-Module-AddOpens", "Java-Module-AddExports", "Java-Module-AddReads") aren't always evaluated.
In my case some OSGi-bundles are using the MANIFEST.MF entry "Bundle-ActivationPolicy: lazy". That means they stay in the bundle-state "Bundle.STARTING" until a class from the bundle is loaded. Unfortunately org.eclipse.fx.osgi.fxloader.FXClassLoader.collectModifications(BundleContext) evaluates only bundles in the state "Bundle.RESOLVED" or "Bundle.ACTIVE".
If there's no reason against, I'd suggest to modify the condition in the for-loop:
[...]
if ((b.getState() & Bundle.RESOLVED) == Bundle.RESOLVED
|| (b.getState() & Bundle.STARTING) == Bundle.STARTING
|| (b.getState() & Bundle.ACTIVE) == Bundle.ACTIVE) {
[...]
Or am I wrong and there is another way to solve the problem?