[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [equinox-dev] servletbridge activator ClassNotFound exception
|
Thanks Simon that lead me down the right path.
I was actually running against a "cracked" open bundle already, actually
I was installing my eclipse project root as the bundle instead of a
packaged jar. That's when I realized my compiled classes were in my
output folder duh (i.e. /bin). So I packaged up my two bundles as jars
and my activator works. However now it is not finding the exported
packaged in the other bundle :(. Apparently the eclipse tooling (PDE
and equinox launcher) resolves all this for you when launching equinox
stand-alone via the eclipse launch config. However you lose all these
goodies when you launch it via the servlet bridge and start installing
bundles manually ;).
Here is my setup,
I have one bundle HelloWorld, that exposes one package
(com.railinc.example.hello) that contains one Interface (HelloWorld).
Here is its manifest:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: HelloWorld Plug-in
Bundle-SymbolicName: HelloWorld
Bundle-Version: 1.0.2
Bundle-Localization: plugin
Export-Package: com.railinc.example.hello
Bundle-ClassPath: .
My HelloWorld.jar has the following:
com/railinc/example/hello/HelloWorld.class
meta-inf/Manifest.mf
I then have another bundle HelloNoSpring that has an internal
implementation of the HelloWorld interface and an Activator. Its
manifest looks like this:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: HelloNoSpring Plug-in
Bundle-SymbolicName: HelloNoSpring
Bundle-Version: 1.0.4
Bundle-Activator: com.railinc.example.activator.HelloNoSpringActivator
Bundle-Localization: plugin
Import-Package: com.railinc.example.hello,
org.osgi.framework;version="1.3.0"
Bundle-ClassPath: .
Its jar has the following:
com/railinc/example/activator/HelloNoSpringActivator.class
com/railinc/example/hello/impl/HelloWorldImpl.class
meta-inf/Manifest.mf
* HelloWorldImpl implements the HelloWorld Interface
* The Activator news up an instance of HelloWorldImpl and tries to
invoke it.
If I comment out the HelloWorld part my activator runs fine now.
However when I add the HelloWorld stuff in there it fails saying it
can't find my HelloWorld interface :(.
Another very interesting point!
If I add the HelloWorld bundle as a required bundle instead of an
imported package it works, but when I try to just do it as an imported
package, I get the CNFE :(. Any ideas anyone?