Yes, it's what I thought: org.eclipse.equinox.log seems to be exported directly by equinox framework. So, if you use this package specifically, it won't work with Felix.
I'm checking if I can find another equinox bundle providing this. Regards JB On 20/12/2019 14:05, Jean-Baptiste Onofré wrote: > In the common headers, I see some packages specific to equinox: > > org.eclipse.equinox.log;version="[1.0,2.0)" > > for instance. > > I'm checking if requirement provides it (it might be provided only by > the equinox framework). > > Regards > JB > > On 20/12/2019 14:02, Jean-Baptiste Onofré wrote: >> Ah, it fails with Felix only. Let me check the common headers, maybe a >> require bundle or dep. >> >> On 20/12/2019 13:59, Jean-Baptiste Onofré wrote: >>> I guess it works fine using Felix Framework right ? The problem happens >>> when you install equinox common no ? >>> >>> Regards >>> JB >>> >>> On 20/12/2019 13:54, Markus Rathgeb wrote: >>>> So, if the Equinox framework is the problem, why is the exception >>>> shown if the Apache Felix Framework is used only? >>>> >>>> Am Fr., 20. Dez. 2019 um 13:51 Uhr schrieb Jean-Baptiste Onofré >>>> <j...@nanthrax.net>: >>>>> >>>>> Hi, >>>>> >>>>> The problem is more about the equinox which export the log package >>>>> whereas it should not (as it's not part of core). >>>>> >>>>> Pax Logging looks good: it exports the packages and mention it uses the >>>>> framework which is good IMHO. >>>>> >>>>> An easy fix would be a wrap/shade equinox to not export the log packages. >>>>> >>>>> Regards >>>>> JB >>>>> >>>>> On 20/12/2019 13:45, Markus Rathgeb wrote: >>>>>> Hi, >>>>>> >>>>>> some third party bundle that is part of my runtime depends on >>>>>> "org.eclipse.equinox.common". >>>>>> >>>>>> I am using Karaf 4.2.7 >>>>>> >>>>>> If the Equinox framework is used I can install and start >>>>>> "org.eclipse.equinox.common". >>>>>> >>>>>> # Install requirement >>>>>> bundle:install >>>>>> mvn:org.eclipse.platform/org.eclipse.equinox.supplement/1.9.0 >>>>>> # Install and start Equinox Common >>>>>> bundle:install -s >>>>>> mvn:org.eclipse.platform/org.eclipse.equinox.common/3.10.400 >>>>>> >>>>>> If the same commands are entered using Felix framework (so an >>>>>> unmodified Karaf configuration) the Activator of Equinox Common fails. >>>>>> >>>>>> === >>>>>> 13:39:13.316 ERROR [Karaf local console user karaf] Exception caught >>>>>> while executing command >>>>>> org.apache.karaf.shell.support.MultiException: Error installing bundles: >>>>>> Unable to start bundle >>>>>> mvn:org.eclipse.platform/org.eclipse.equinox.common/3.10.400: >>>>>> org.osgi.framework.BundleException: Activator start error in bundle >>>>>> org.eclipse.equinox.common [45]. >>>>>> at >>>>>> org.apache.karaf.shell.support.MultiException.throwIf(MultiException.java:61) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.karaf.bundle.command.Install.execute(Install.java:131) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415) >>>>>> ~[?:?] >>>>>> at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416) >>>>>> ~[?:?] >>>>>> at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229) ~[?:?] >>>>>> at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59) ~[?:?] >>>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266) >>>>>> ~[?:1.8.0_202] >>>>>> at >>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) >>>>>> ~[?:1.8.0_202] >>>>>> at >>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >>>>>> ~[?:1.8.0_202] >>>>>> at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202] >>>>>> Suppressed: java.lang.Exception: Unable to start bundle >>>>>> mvn:org.eclipse.platform/org.eclipse.equinox.common/3.10.400: >>>>>> org.osgi.framework.BundleException: Activator start error in bundle >>>>>> org.eclipse.equinox.common [45]. >>>>>> at >>>>>> org.apache.karaf.bundle.command.Install.execute(Install.java:117) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415) ~[?:?] >>>>>> at >>>>>> org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416) ~[?:?] >>>>>> at >>>>>> org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229) ~[?:?] >>>>>> at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59) >>>>>> ~[?:?] >>>>>> at >>>>>> java.util.concurrent.FutureTask.run(FutureTask.java:266) >>>>>> ~[?:1.8.0_202] >>>>>> at >>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) >>>>>> ~[?:1.8.0_202] >>>>>> at >>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >>>>>> ~[?:1.8.0_202] >>>>>> at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202] >>>>>> Caused by: org.osgi.framework.BundleException: Activator start >>>>>> error in bundle org.eclipse.equinox.common [45]. >>>>>> 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.bundle.command.Install.execute(Install.java:115) >>>>>> ~[?:?] >>>>>> ... 13 more >>>>>> Caused by: java.lang.NoClassDefFoundError: >>>>>> org/osgi/service/log/Logger >>>>>> at java.lang.ClassLoader.defineClass1(Native Method) >>>>>> ~[?:1.8.0_202] >>>>>> at >>>>>> java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:1.8.0_202] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2194) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1607) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) >>>>>> ~[?:?] >>>>>> at >>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_202] >>>>>> at java.lang.ClassLoader.defineClass1(Native Method) >>>>>> ~[?:1.8.0_202] >>>>>> at >>>>>> java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:1.8.0_202] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2194) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1607) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) >>>>>> ~[?:?] >>>>>> at >>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_202] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1414) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1660) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1590) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) >>>>>> ~[?:?] >>>>>> at >>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_202] >>>>>> at >>>>>> org.eclipse.core.internal.runtime.Activator.getPlatformWriter(Activator.java:95) >>>>>> ~[?:?] >>>>>> at >>>>>> org.eclipse.core.internal.runtime.Activator.start(Activator.java:83) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.Felix.activateBundle(Felix.java:2240) >>>>>> ~[?:?] >>>>>> 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.bundle.command.Install.execute(Install.java:115) >>>>>> ~[?:?] >>>>>> ... 13 more >>>>>> Caused by: java.lang.ClassNotFoundException: >>>>>> org.osgi.service.log.Logger not found by >>>>>> org.ops4j.pax.logging.pax-logging-api [6] >>>>>> 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.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_202] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1414) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1660) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1590) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) >>>>>> ~[?:?] >>>>>> at >>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_202] >>>>>> at java.lang.ClassLoader.defineClass1(Native Method) >>>>>> ~[?:1.8.0_202] >>>>>> at >>>>>> java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:1.8.0_202] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2194) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1607) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) >>>>>> ~[?:?] >>>>>> at >>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_202] >>>>>> at java.lang.ClassLoader.defineClass1(Native Method) >>>>>> ~[?:1.8.0_202] >>>>>> at >>>>>> java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:1.8.0_202] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2194) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1607) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) >>>>>> ~[?:?] >>>>>> at >>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_202] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1414) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1660) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1590) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) >>>>>> ~[?:?] >>>>>> at >>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_202] >>>>>> at >>>>>> org.eclipse.core.internal.runtime.Activator.getPlatformWriter(Activator.java:95) >>>>>> ~[?:?] >>>>>> at >>>>>> org.eclipse.core.internal.runtime.Activator.start(Activator.java:83) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697) >>>>>> ~[?:?] >>>>>> at >>>>>> org.apache.felix.framework.Felix.activateBundle(Felix.java:2240) >>>>>> ~[?:?] >>>>>> 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.bundle.command.Install.execute(Install.java:115) >>>>>> ~[?:?] >>>>>> ... 13 more >>>>>> === >>>>>> >>>>>> >>>>>> If we look at the exports for the relevant package on Equinox: >>>>>> >>>>>> karaf@root()> package:exports -p org.osgi.service.log >>>>>> Package Name │ Version │ ID │ Bundle Name >>>>>> ─────────────────────┼─────────┼────┼────────────────────────────────────── >>>>>> org.osgi.service.log │ 1.3.0 │ 6 │ >>>>>> org.ops4j.pax.logging.pax-logging-api >>>>>> org.osgi.service.log │ 1.3.0 │ 0 │ org.eclipse.osgi >>>>>> >>>>>> on Felix >>>>>> >>>>>> karaf@root()> package:exports -p org.osgi.service.log >>>>>> Package Name │ Version │ ID │ Bundle Name >>>>>> ─────────────────────┼─────────┼────┼────────────────────────────────────── >>>>>> org.osgi.service.log │ 1.3.0 │ 6 │ >>>>>> org.ops4j.pax.logging.pax-logging-api >>>>>> >>>>>> >>>>>> To be more precise, the export package header of the Pax Logging API >>>>>> looks like: >>>>>> >>>>>> org.osgi.service.log;uses:=org.osgi.framework;version=1.3 >>>>>> >>>>>> So, it needs to fail as long as Apache Felix Core does not export this >>>>>> package itself. >>>>>> Correct? >>>>>> >>>>>> How to fix? >>>>>> >>>>>> Best regards, >>>>>> Markus >>>>>> >>>>> >>>>> -- >>>>> Jean-Baptiste Onofré >>>>> jbono...@apache.org >>>>> http://blog.nanthrax.net >>>>> Talend - http://www.talend.com >>> >> > -- Jean-Baptiste Onofré jbono...@apache.org http://blog.nanthrax.net Talend - http://www.talend.com