Hi Apache devs, I'm trying to use org.apache.felix.configurator version 1.0.10 in an OSGi enRoute project. EnRoute uses 1.0.6 by default, but I'm trying to bump the version to see if it addresses what might be a lifecycle bug (that's a topic for a separate email).
Initially there were some problems resolving the bundle, so 1.0.10 has an import that was not required in 1.0.6: [ERROR] Resolution failed. Capabilities satisfying the following requirements could not be found: [<<INITIAL>>] ⇒ osgi.identity: (osgi.identity=org.example.app) ⇒ [org.example.app version=0.0.1.202005190718] ⇒ osgi.extender: (&(osgi.extender=osgi.configurator)(version>=1.0.0)(!(version>=2.0.0))) ⇒ [org.apache.felix.configurator version=1.0.10] ⇒ osgi.wiring.package: (&(osgi.wiring.package=javax.json)(&(version>=1.0.0)(!(version>=2.0.0)))) I tried adding org.apache.geronimo.specs:geronimo-json_1.0_spec (which is listed as a provided scope dependency of configurator) to the resolver input as follows: <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-json_1.0_spec</artifactId> <version>1.0-alpha-1</version> <scope>runtime</scope> </dependency> This successfully resolves, but the Configurator now throws a CNFE from its activator: ! Failed to start bundle org.apache.felix.configurator-1.0.10, exception activator error org.apache.johnzon.core.JsonProviderImpl not found from: javax.json.spi.JsonProvider:doLoadProvider#132 org.osgi.framework.BundleException: Exception in org.apache.felix.configurator.impl.Activator.start() of bundle org.apache.felix.configurator. at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:803) at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:732) at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1005) at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:357) ... Caused by: javax.json.JsonException: org.apache.johnzon.core.JsonProviderImpl not found at javax.json.spi.JsonProvider.doLoadProvider(JsonProvider.java:132) at javax.json.spi.JsonProvider.provider(JsonProvider.java:64) at javax.json.Json.createReader(Json.java:68) at org.apache.felix.configurator.impl.json.JSONUtil.parseJSON(JSONUtil.java:329) at org.apache.felix.configurator.impl.json.JSONUtil.readJSON(JSONUtil.java:161) at org.apache.felix.configurator.impl.json.JSONUtil.readJSON(JSONUtil.java:122) at org.apache.felix.configurator.impl.json.JSONUtil.readConfigurationsFromBundle(JSONUtil.java:86) at org.apache.felix.configurator.impl.Configurator.processAddBundle(Configurator.java:315) ... Caused by: java.lang.ClassNotFoundException: org.apache.johnzon.core.JsonProviderImpl at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) at org.eclipse.osgi.internal.framework.ContextFinder.loadClass(ContextFinder.java:135) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) at javax.json.spi.JsonProvider.doLoadProvider(JsonProvider.java:129) ... I am running on Java 11 (AdoptOpenJDK build 11.0.7+10). What combination of bundles does Configurator actually require? Why does this bundle allow a correct resolution of imports but then throw a CNFE at runtime? Note that configurator 1.0.6 embeds geronimo-json_1.0_spec-1.0-alpha-1.jar, johnzon-core-1.0.0.jar and org.apache.felix.converter-1.0.0.jar using Bundle-ClassPath, but this is no longer the case in 1.0.10. That seems like an error. Regards, Neil