How can I run a subprocess in Equinox with dynamic bundle installation?

you can use the Equinox Launcher API. Here’s an example of how you can use the Equinox Launcher api to launch a new instance of equinox with a set of bundles: ` EquinoxLauncher launcher = new EquinoxLauncher(); String equinoxHome = “/path/to/equinox/home”; String[] bundlePaths = { “/path/to/bundle1.jar”, “/path/to/bundle2.jar” }; EquinoxRunConfiguration runConfig = launcher.newConfiguration(); runConfig.setWorkingDir(new File(equinoxHome)); runConfig.setFramework(new … Read more

Java 8 & Missing required capability Require-Capability: osgi.ee; filter=”(&(osgi.ee=JavaSE)(version=1.8))”

The error means that your bundle has a Require-Capability: osgi.ee; filter=”(&(osgi.ee=JavaSE)(version=1.8))” entry in its manifest. So this means the bundle will only start when there is a bundle that provides this capability. In case of the osgi.ee capability it is the OSGi framework (equinox) that should provide this capability. Apparently it does not do this. … Read more

What is the difference between OSGi Components and Services

“Components” are less formally defined than services. A service is any object that is registered in the OSGi Service Registry and can be looked up using its interface name(s). The only prerequisite is that a service should implement some interface… any interface. For example I could register a runnable object under the java.lang.Runnable interface, and … Read more

Why can’t JAXB find my jaxb.index when running inside Apache Felix?

OK, this took quite some digging, but the answer is not that surprising and not even that complicated: JAXB can’t find jaxb.index, because by default, newInstance(String) uses the current thread’s class loader (as returned by Thread.getContextClassLoader()). This doesn’t work inside Felix, because the OSGi bundles and the framework’s threads have separate class loaders. The solution … Read more