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

Reply via email to