Hi guys,

I tested (during the vote) Felix SCR 2.1.22 without problem in Karaf 
4.3.0-SNAPSHOT (using Pax Logging 2.x).

This morning I tested SCR 2.1.22 on Karaf 4.2.10-SNAPSHOT (with Pax Logging 
1.x), and I have the issue: the activator doesn’t start at all:

org.osgi.framework.BundleException: Activator start error in bundle 
org.apache.felix.scr [48].
                at 
org.apache.felix.framework.Felix.activateBundle(Felix.java:2290)
                at org.apache.felix.framework.Felix.startBundle(Felix.java:2146)
                at 
org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)
                at 
org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)
                at 
org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:165)
                at 
org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1153)
                at 
org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1036)
                ... 6 more
        Caused by: java.lang.NoClassDefFoundError: 
org/osgi/service/log/LoggerFactory
                at 
org.apache.felix.scr.impl.logger.LogManager.<init>(LogManager.java:59)
                at 
org.apache.felix.scr.impl.logger.ScrLogManager.<init>(ScrLogManager.java:62)
                at 
org.apache.felix.scr.impl.logger.ScrLogManager.scr(ScrLogManager.java:58)
                at org.apache.felix.scr.impl.Activator.start(Activator.java:119)
                at 
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697)
                at 
org.apache.felix.framework.Felix.activateBundle(Felix.java:2240)
                ... 12 more
        Caused by: java.lang.ClassNotFoundException: 
org.osgi.service.log.LoggerFactory not found by org.apache.felix.scr [48]
                at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
                at 
org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
                at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
                at 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
                ... 18 more

So, it seems that org.osgi.service.log.LoggerFactory is now a strong 
requirement, whereas the org.osgi.service.log package is optional in 
Import-Package:

org.osgi.service.log;resolution:=optional;version="[1.4,2)"

This import is not satisfied in Karaf 4.2.x as Pax Logging exports 1.3.0 
version.

This requirement has been introduced by this commit:

commit 18d37af0cc3b6a1392dc2053ae97a5577adfa0e5
Author: Peter Kriens <peter.kri...@aqute.biz>
Date:   Thu Jul 23 16:39:40 2020 +0200

    [scr] Logging Extension


So basically, I have several questions:

1. If org.osgi.service.log package is required, we should not flag as optional 
in Import-Package right ?
2. It sounds like a non backward compatible change to me, so, maybe it would 
have been better to bump version to 2.2.0 instead of 2.1.22. Thoughts ?
3. Do you think it’s a problem to extend the range to [1.3,2) ?

Anyway, I gonna take a deeper look to see if I can find a fix for Karaf 4.2.x 
(testing extending the range and/or upgrading Pax Logging).

Regards
JB

Reply via email to