You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Markus Rathgeb <ma...@gmail.com> on 2019/12/20 12:45:11 UTC

org.osgi.service.log.Logger

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

Re: org.osgi.service.log.Logger

Posted by Markus Rathgeb <ma...@gmail.com>.
Hi

Just to be clear: org.osgi.service.log is provided by Pax Logging (not
> Karaf directly).
> The version is set by Pax Logging.
>

That's absolutely clear.
As written before, I updated the Pax Logging of an Karaf instance already
to 2.0.0-SNAPSHOT and bundles requiring org.osgi.service.log 1.4 seems to
work.
What is not working is e.g. the "log" commands of Karaf and I am pretty
sure they are provided by "org.apache.karaf.log.core" and not by Pax
Logging.
So, I had been able to get Pax Logging 2.0.0-SNAPSHOT in the container and
the wiring of 3rd party bundles but the Karaf integration is missing.
But we don't need to care about, it has just been a test.

So, my proposal is:
>
> 1. I do Pax Logging 2.0.0 release
>

great ;)


> 2. I upgrade Pax Logging on karaf master to cut 4.3.0.RC1 (R7 compliant)
>

great ;)

3. Once Karaf 4.2.8 is released (it will happen this week),


great ;)

I will
> update on 4.2.9-SNAPSHOT to evaluate support of Pax Logging 2.0.0 (and
> update command and so). If good, I will prepare 4.2.9 with that.
>

great ;)

Does it sound good to you ?
>

All fine, thank you.

Best regards,
Markus

Re: org.osgi.service.log.Logger

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Hi,

Just to be clear: org.osgi.service.log is provided by Pax Logging (not
Karaf directly).
The version is set by Pax Logging.

org.osgi.service.log 1.4 is part of R7, so it requires Pax Logging 2.0.0.
Karaf 4.2.x is R6, so it needs some changes to support pax-logging 2.0.0
but do-able (not a big effort, pretty easy).

So, my proposal is:

1. I do Pax Logging 2.0.0 release
2. I upgrade Pax Logging on karaf master to cut 4.3.0.RC1 (R7 compliant)
3. Once Karaf 4.2.8 is released (it will happen this week), I will
update on 4.2.9-SNAPSHOT to evaluate support of Pax Logging 2.0.0 (and
update command and so). If good, I will prepare 4.2.9 with that.

Does it sound good to you ?

Regards
JB

On 08/01/2020 14:06, Markus Rathgeb wrote:
> Hi,
> 
>     it's more Pax Logging related.
> 
> 
> hm, I updated (on december) a Karaf instance to use the most recent
> (that time) 2.0.0 SNAPSHOT and the only breakage I identified at that
> time is the Karaf integration itself (org.apache.karaf.log.core) --
> missing commands etc.
> So for me Pax Logging has been already ready (more or less) but the
> Karaf side cannot use it.
> But I did not do excessive testing.
> 
> In the long run I will definitely move to 4.3.0 but this is a bigger
> change that cannot be done such easily (testing etc) than moving from
> 4.2.7 to 4.2.8.
> 
> Best regards,
> Markus

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Markus Rathgeb <ma...@gmail.com>.
Hi,

it's more Pax Logging related.
>

hm, I updated (on december) a Karaf instance to use the most recent (that
time) 2.0.0 SNAPSHOT and the only breakage I identified at that time is the
Karaf integration itself (org.apache.karaf.log.core) -- missing commands
etc.
So for me Pax Logging has been already ready (more or less) but the Karaf
side cannot use it.
But I did not do excessive testing.

In the long run I will definitely move to 4.3.0 but this is a bigger change
that cannot be done such easily (testing etc) than moving from 4.2.7 to
4.2.8.

Best regards,
Markus

Re: org.osgi.service.log.Logger

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Hi,

it's more Pax Logging related.

Currently, Karaf uses pax-logging 1.11, which is R6 compliant, so
org.osgi.service.log 1.3.

Pax Logging 2.0 (not yet relesed, I will release it soon) is R7
compliant, so org.osgi.service.log 1.4.
Karaf 4.3.0.RC1 will use Pax Logging 2.0.

Karaf 4.2.x should stay in R6, but it could work to upgrade to Pax
Logging 2.0.0 (it's not super clean, but working).

Anyway, in your case, I will definitely prefer to upgrade to 4.3.0.RC1
that will be R7 compliant.

Regards
JB

On 07/01/2020 21:57, Markus Rathgeb wrote:
> Hi JB,
> 
> have you had any luck on adding support for the most recent Pax Logging
> code base to org.apache.karaf.log.core?
> 
> Do you already know if you find enough time to add Log Service
> Specification 1.4 support to Karaf 4.2.8?
> 
> Best regards,
> Markus
> 
> Am So., 22. Dez. 2019 um 13:14 Uhr schrieb Markus Rathgeb
> <maggu2810@gmail.com <ma...@gmail.com>>:
> 
>     At least for me it would be really great of the log service 1.4 could
>     be used in 4.2.8 ;)
> 
>     Am Fr., 20. Dez. 2019 um 15:52 Uhr schrieb Jean-Baptiste Onofré
>     <jb@nanthrax.net <ma...@nanthrax.net>>:
>     >
>     > Hi,
>     >
>     > I think we can backport this in Karaf 4.2.x. Originally, I planned to
>     > focus this only on Karaf 4.3.x, but it makes sense to backport
>     > "compendium/extra" package on 4.2.x, even if the framework is
>     still R6.
>     >
>     > I'm not sure I will have time to do that for 4.2.8, but let me try.
>     >
>     > Regards
>     > JB
>     >
>     > On 20/12/2019 14:59, Markus Rathgeb wrote:
>     > > Hi JB,
>     > > me again. ;)
>     > >
>     > > In Karaf 4.2.7 the scr feature already implements the Declarative
>     > > Services Specification 1.4.
>     > > Would it be possible that Pax Logging provides an implementation of
>     > > the Log Service Specification 1.4 in Karaf 4.2.8?
>     > > Or will the Log Service Specification 1.4 rely on some Core R7
>     feature?
>     > >
>     > > Best regards,
>     > > Markus
>     > >
>     > > Am Fr., 20. Dez. 2019 um 14:29 Uhr schrieb Markus Rathgeb
>     <maggu2810@gmail.com <ma...@gmail.com>>:
>     > >>
>     > >> The "Equinox Common" can be used on Felix Framework using the
>     "Equinox
>     > >> Supplement" package that provides e.g. "org.eclipse.equinox.log".
>     > >>
>     > >> The Equinox Logger implements the Logger interface of the OSGi Log
>     > >> Service specification 1.4
>     > >>
>     https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/src/org/eclipse/equinox/log/Logger.java#L23
>     > >>
>     > >> The "Equinox Supplement" does not usage version constraints at
>     all on
>     > >> its imports:
>     > >>
>     https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF#L25
>     >
>     > --
>     > Jean-Baptiste Onofré
>     > jbonofre@apache.org <ma...@apache.org>
>     > http://blog.nanthrax.net
>     > Talend - http://www.talend.com
> 

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Markus Rathgeb <ma...@gmail.com>.
Hi JB,

have you had any luck on adding support for the most recent Pax Logging
code base to org.apache.karaf.log.core?

Do you already know if you find enough time to add Log Service
Specification 1.4 support to Karaf 4.2.8?

Best regards,
Markus

Am So., 22. Dez. 2019 um 13:14 Uhr schrieb Markus Rathgeb <
maggu2810@gmail.com>:

> At least for me it would be really great of the log service 1.4 could
> be used in 4.2.8 ;)
>
> Am Fr., 20. Dez. 2019 um 15:52 Uhr schrieb Jean-Baptiste Onofré
> <jb...@nanthrax.net>:
> >
> > Hi,
> >
> > I think we can backport this in Karaf 4.2.x. Originally, I planned to
> > focus this only on Karaf 4.3.x, but it makes sense to backport
> > "compendium/extra" package on 4.2.x, even if the framework is still R6.
> >
> > I'm not sure I will have time to do that for 4.2.8, but let me try.
> >
> > Regards
> > JB
> >
> > On 20/12/2019 14:59, Markus Rathgeb wrote:
> > > Hi JB,
> > > me again. ;)
> > >
> > > In Karaf 4.2.7 the scr feature already implements the Declarative
> > > Services Specification 1.4.
> > > Would it be possible that Pax Logging provides an implementation of
> > > the Log Service Specification 1.4 in Karaf 4.2.8?
> > > Or will the Log Service Specification 1.4 rely on some Core R7 feature?
> > >
> > > Best regards,
> > > Markus
> > >
> > > Am Fr., 20. Dez. 2019 um 14:29 Uhr schrieb Markus Rathgeb <
> maggu2810@gmail.com>:
> > >>
> > >> The "Equinox Common" can be used on Felix Framework using the "Equinox
> > >> Supplement" package that provides e.g. "org.eclipse.equinox.log".
> > >>
> > >> The Equinox Logger implements the Logger interface of the OSGi Log
> > >> Service specification 1.4
> > >>
> https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/src/org/eclipse/equinox/log/Logger.java#L23
> > >>
> > >> The "Equinox Supplement" does not usage version constraints at all on
> > >> its imports:
> > >>
> https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF#L25
> >
> > --
> > Jean-Baptiste Onofré
> > jbonofre@apache.org
> > http://blog.nanthrax.net
> > Talend - http://www.talend.com
>

Re: org.osgi.service.log.Logger

Posted by Markus Rathgeb <ma...@gmail.com>.
At least for me it would be really great of the log service 1.4 could
be used in 4.2.8 ;)

Am Fr., 20. Dez. 2019 um 15:52 Uhr schrieb Jean-Baptiste Onofré
<jb...@nanthrax.net>:
>
> Hi,
>
> I think we can backport this in Karaf 4.2.x. Originally, I planned to
> focus this only on Karaf 4.3.x, but it makes sense to backport
> "compendium/extra" package on 4.2.x, even if the framework is still R6.
>
> I'm not sure I will have time to do that for 4.2.8, but let me try.
>
> Regards
> JB
>
> On 20/12/2019 14:59, Markus Rathgeb wrote:
> > Hi JB,
> > me again. ;)
> >
> > In Karaf 4.2.7 the scr feature already implements the Declarative
> > Services Specification 1.4.
> > Would it be possible that Pax Logging provides an implementation of
> > the Log Service Specification 1.4 in Karaf 4.2.8?
> > Or will the Log Service Specification 1.4 rely on some Core R7 feature?
> >
> > Best regards,
> > Markus
> >
> > Am Fr., 20. Dez. 2019 um 14:29 Uhr schrieb Markus Rathgeb <ma...@gmail.com>:
> >>
> >> The "Equinox Common" can be used on Felix Framework using the "Equinox
> >> Supplement" package that provides e.g. "org.eclipse.equinox.log".
> >>
> >> The Equinox Logger implements the Logger interface of the OSGi Log
> >> Service specification 1.4
> >> https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/src/org/eclipse/equinox/log/Logger.java#L23
> >>
> >> The "Equinox Supplement" does not usage version constraints at all on
> >> its imports:
> >> https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF#L25
>
> --
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Hi,

I think we can backport this in Karaf 4.2.x. Originally, I planned to
focus this only on Karaf 4.3.x, but it makes sense to backport
"compendium/extra" package on 4.2.x, even if the framework is still R6.

I'm not sure I will have time to do that for 4.2.8, but let me try.

Regards
JB

On 20/12/2019 14:59, Markus Rathgeb wrote:
> Hi JB,
> me again. ;)
> 
> In Karaf 4.2.7 the scr feature already implements the Declarative
> Services Specification 1.4.
> Would it be possible that Pax Logging provides an implementation of
> the Log Service Specification 1.4 in Karaf 4.2.8?
> Or will the Log Service Specification 1.4 rely on some Core R7 feature?
> 
> Best regards,
> Markus
> 
> Am Fr., 20. Dez. 2019 um 14:29 Uhr schrieb Markus Rathgeb <ma...@gmail.com>:
>>
>> The "Equinox Common" can be used on Felix Framework using the "Equinox
>> Supplement" package that provides e.g. "org.eclipse.equinox.log".
>>
>> The Equinox Logger implements the Logger interface of the OSGi Log
>> Service specification 1.4
>> https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/src/org/eclipse/equinox/log/Logger.java#L23
>>
>> The "Equinox Supplement" does not usage version constraints at all on
>> its imports:
>> https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF#L25

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Markus Rathgeb <ma...@gmail.com>.
Hi JB,
me again. ;)

In Karaf 4.2.7 the scr feature already implements the Declarative
Services Specification 1.4.
Would it be possible that Pax Logging provides an implementation of
the Log Service Specification 1.4 in Karaf 4.2.8?
Or will the Log Service Specification 1.4 rely on some Core R7 feature?

Best regards,
Markus

Am Fr., 20. Dez. 2019 um 14:29 Uhr schrieb Markus Rathgeb <ma...@gmail.com>:
>
> The "Equinox Common" can be used on Felix Framework using the "Equinox
> Supplement" package that provides e.g. "org.eclipse.equinox.log".
>
> The Equinox Logger implements the Logger interface of the OSGi Log
> Service specification 1.4
> https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/src/org/eclipse/equinox/log/Logger.java#L23
>
> The "Equinox Supplement" does not usage version constraints at all on
> its imports:
> https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF#L25

Re: org.osgi.service.log.Logger

Posted by Markus Rathgeb <ma...@gmail.com>.
The "Equinox Common" can be used on Felix Framework using the "Equinox
Supplement" package that provides e.g. "org.eclipse.equinox.log".

The Equinox Logger implements the Logger interface of the OSGi Log
Service specification 1.4
https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/src/org/eclipse/equinox/log/Logger.java#L23

The "Equinox Supplement" does not usage version constraints at all on
its imports:
https://github.com/eclipse/rt.equinox.framework/blob/63a9e1075ab029c5090a3d50cf52b82f052c62f6/bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF#L25

Re: org.osgi.service.log.Logger

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Hi,

Yeah, I agree: the import should be [1.4,2).

However, I think it will work on Karaf 4.3.0.RC1 as we upgraded to log
1.4 as part of the R7 update.

Anyway, IMHO, equinox common should update import range to avoid confusion.

Regards
JB

On 20/12/2019 14:11, Markus Rathgeb wrote:
> The interface Logger of org.osgi.service.log has been added on 1.4.
> 
> So if "Equinox Common" is using Logger then the imported version range
> is wrong: org.osgi.service.log;version="[1.3.0, 2.0)"
> 
> Correct?
> 
> Am Fr., 20. Dez. 2019 um 14:05 Uhr schrieb Jean-Baptiste Onofré
> <jb...@nanthrax.net>:
>>
>> 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é
>>>>> <jb...@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é
>>>>>> jbonofre@apache.org
>>>>>> http://blog.nanthrax.net
>>>>>> Talend - http://www.talend.com
>>>>
>>>
>>
>> --
>> Jean-Baptiste Onofré
>> jbonofre@apache.org
>> http://blog.nanthrax.net
>> Talend - http://www.talend.com

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Markus Rathgeb <ma...@gmail.com>.
The interface Logger of org.osgi.service.log has been added on 1.4.

So if "Equinox Common" is using Logger then the imported version range
is wrong: org.osgi.service.log;version="[1.3.0, 2.0)"

Correct?

Am Fr., 20. Dez. 2019 um 14:05 Uhr schrieb Jean-Baptiste Onofré
<jb...@nanthrax.net>:
>
> 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é
> >>> <jb...@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é
> >>>> jbonofre@apache.org
> >>>> http://blog.nanthrax.net
> >>>> Talend - http://www.talend.com
> >>
> >
>
> --
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
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é
>>>> <jb...@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é
>>>>> jbonofre@apache.org
>>>>> http://blog.nanthrax.net
>>>>> Talend - http://www.talend.com
>>>
>>
> 

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
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é
>>> <jb...@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é
>>>> jbonofre@apache.org
>>>> http://blog.nanthrax.net
>>>> Talend - http://www.talend.com
>>
> 

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
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é
>> <jb...@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é
>>> jbonofre@apache.org
>>> http://blog.nanthrax.net
>>> Talend - http://www.talend.com
> 

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
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é
> <jb...@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é
>> jbonofre@apache.org
>> http://blog.nanthrax.net
>> Talend - http://www.talend.com

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Markus Rathgeb <ma...@gmail.com>.
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é
<jb...@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é
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com

Re: org.osgi.service.log.Logger

Posted by Jean-Baptiste Onofré <jb...@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é
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com