Tried again after today's commit. Good news is the I am resolving.
But not starting my activator. NoClassDefFoundError:
org/osgi/framework/BundleContext??
Welcome to Felix.
=================
DEBUG: WIRE: 1.0 -> org.osgi.service.packageadmin -> 0
DEBUG: WIRE: 1.0 -> org.osgi.service.startlevel -> 0
DEBUG: WIRE: 1.0 -> org.ungoverned.osgi.service.shell -> 1.0
DEBUG: WIRE: 1.0 -> org.osgi.framework -> 0
DEBUG: WIRE: 1.0 -> org.apache.felix.shell -> 1.0
DEBUG: WIRE: 2.0 -> org.osgi.framework -> 0
DEBUG: WIRE: 2.0 -> org.apache.felix.shell -> 1.0
DEBUG: WIRE: 4.0 -> org.slf4j.spi -> 3.0
DEBUG: WIRE: 4.0 ->
module;bundle-symbolic-name="slf4j.api";bundle-version="1.3.0.SNAPSHOT"
-> 3.0
DEBUG: WIRE: 5.0 -> org.slf4j -> 4.0
DEBUG: WIRE: 5.0 -> org.slf4j.impl -> 4.0
ERROR: Error starting
file:/home/jconlon/.m2/repository/org/slf4j/slf4j-osgi-test/1.3-SNAPSHOT/slf4j-osgi-test-1.3-SNAPSHOT.jar
(org.osgi.framework.BundleException: Activator start error.)
java.lang.NoClassDefFoundError: org/osgi/framework/BundleContext
at org.slf4j.osgi.test.Activator.start(Activator.java:48)
at
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:509)
at org.apache.felix.framework.Felix._startBundle(Felix.java:1298)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1239)
at
org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:834)
at
org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:256)
at java.lang.Thread.run(Thread.java:595)
-> ps
START LEVEL 2
ID State Level Name
[ 0] [Active ] [ 0] System Bundle (0.9.0.incubator-SNAPSHOT)
[ 1] [Active ] [ 1] Apache Felix Shell Service
(0.9.0.incubator-SNAPSHOT)
[ 2] [Active ] [ 1] Apache Felix Shell TUI
(0.9.0.incubator-SNAPSHOT)
[ 3] [Active ] [ 2] slf4j-api (1.3.0.SNAPSHOT)
[ 4] [Active ] [ 2] slf4j-nop (1.3.0.SNAPSHOT)
[ 5] [Resolved ] [ 2] slf4j-osgi-test (1.3.0.SNAPSHOT)
-> John
John E. Conlon wrote:
Hi Chris and Richard,
Thanks for the update. Will await your commit.
cheers,
John
Richard S. Hall wrote:
Chris is correct, it is not committed yet, only the generic resolver
code is committed.
From what I can see, I am really close to committing an initial
"loose" implementation of require-bundle. I have been running my
workspace code against the TCK and we are passing some of the
require-bundle test cases and not breaking existing test suites.
I am definitely not waiting until everything is completely done
before I check stuff in; however, there are a few issues I would like
to resolve before I check in what I have.
I am hoping to have this initial commit by the end of the week. Keep
your fingers crossed.
-> richard
On Jan 30, 2007, at 6:14 PM, Chris Custine wrote:
Your headers look perfectly fine to me, but the Require-Bundle code
hasn't
been checked in yet. I chatted with Richard yesterday and he was about
finished so it shouldn't be too much longer.
Chris
On 1/30/07, John E. Conlon <[EMAIL PROTECTED]> wrote:
Hi Richard,
The slf4j logging framework is now being offered as OSGi bundles, but
the caveat is that slf4j is using 'Split Packages' and uses
Require-Bundles. Tried the latest build to test these bundles but
can't
see all classes in the split packages. I know you were working on
Required-Bundle - Is Require-Bundle operational in the framework yet?
Here is what the two sl4fj bundles look like:
Bundle (3.0) - slf4j-api:
Export-Package: org.slf4j.spi,
org.slf4j;partial=true;mandatory:=partial,
org.slf4j.impl;partial=true;mandatory:=partial
Bundle (4.0) - slf4j-nop:
Require-Bundle: slf4j.api;visibility:=reexport
Export-Package: org.slf4j, org.slf4j.impl
Import-Package: org.slf4j.spi
(Note:
- contains classes on split packages org.slf4j and org.slf4j.impl.
- uses classes on org.slf4j, org.slf4j.impl, org.slf4j.spi)
As I understand Require-Bundle; a client bundle (5.0 in the runtime)
that imports org.sl4fj and org.slf4j.impl packages will get them from
the slf4j-nop Bundle (4.0) which will have gotten them from bundle
(3.0). Since the packages are both split-packages they contain a
superset of classes that are contained in both the sl4j-api (3.0) and
slf4j-nop (4.0) bundles. As a separate import the org.slf4j.spi
should
be imported by the slf4j-nop bundle (4.0) from bundle(3.0).
When I start the runtime here is what happens...
Wiring looks good: (I think?)
DEBUG: WIRE: 1.0 -> org.osgi.service.packageadmin -> 0
DEBUG: WIRE: 1.0 -> org.osgi.service.startlevel -> 0
DEBUG: WIRE: 1.0 -> org.ungoverned.osgi.service.shell -> 1.0
DEBUG: WIRE: 1.0 -> org.osgi.framework -> 0
DEBUG: WIRE: 1.0 -> org.apache.felix.shell -> 1.0
DEBUG: WIRE: 2.0 -> org.osgi.framework -> 0
DEBUG: WIRE: 2.0 -> org.apache.felix.shell -> 1.0
DEBUG: WIRE: 4.0 -> org.slf4j.spi -> 3.0
DEBUG: WIRE: 5.0 -> org.slf4j -> 4.0
DEBUG: WIRE: 5.0 -> org.slf4j.impl -> 4.0
But when my slf4j-osgi-test bundle (5.0) starts and the activator is
called I get:
java.lang.NoClassDefFoundError: org/slf4j/ILoggerFactory
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:65)
at org.slf4j.osgi.test.Activator.<init>(Activator.java:36)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(
NativeConstructorAccessorImpl.java:39)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
DelegatingConstructorAccessorImpl.java:27)
at
java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at java.lang.Class.newInstance0(Class.java:350)
at java.lang.Class.newInstance(Class.java:303)
at
org.apache.felix.framework.Felix.createBundleActivator(Felix.java:2914)
at
org.apache.felix.framework.Felix._startBundle(Felix.java:1293)
at
org.apache.felix.framework.Felix.startBundle(Felix.java:1239)
at
org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:834)
at
org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:256)
at java.lang.Thread.run(Thread.java:595)
Note: That class is in the slf4j-nop bundle (4.0).
-> ps
START LEVEL 2
ID State Level Name
[ 0] [Active ] [ 0] System Bundle (0.9.0.incubator-SNAPSHOT)
[ 1] [Active ] [ 1] Apache Felix Shell Service
(0.9.0.incubator-SNAPSHOT)
[ 2] [Active ] [ 1] Apache Felix Shell TUI
(0.9.0.incubator-SNAPSHOT)
[ 3] [Active ] [ 2] slf4j-api (1.3.0.SNAPSHOT)
[ 4] [Active ] [ 2] slf4j-nop (1.3.0.SNAPSHOT)
[ 5] [Resolved ] [ 2] slf4j-osgi-test (1.3.0.SNAPSHOT)
It appears that all classes in package org.slf4j of slf4j-nop bundle
(4.0) are being shadowed by org.slf4j in sl4j-api (3.0).
Are these bundles specifying the Required bundles and Import/Exports
correctly?
thanks for any insight,
John