tom
tom

Reputation: 485

How to use BundleWiring.findEntries() on system bundle?

I am trying to find a set of package names in all OSGi modules by using BundleWiring's findEntries() method. For all other modules, I can simply run

bundleWiring.findEntries("/" + packageName, "*.class", 2)

to get the URL's to all classes in that package.

The problem is this approach doesn't work for OSGi System Bundle (bundle 0). Through the classloader I was able to see that the classes I want are in tomcat/webapps/ROOT/WEB-INF/lib/x.jar, but how can I find the path to those classes if I am only given System Bundle as a bundle?

The packages are exported in system.packages.extra.mf

Upvotes: 0

Views: 255

Answers (1)

Neil Bartlett
Neil Bartlett

Reputation: 23958

This is not possible because the system bundle is just the "outside" of OSGi. You can use an arbitrary ClassLoader to load the OSGi Framework, and ClassLoaders don't have a way to iterate the packages or classes that they know about.

Upvotes: 1

Related Questions