我有一个基于 Equinox 的应用程序。我需要更新一个包并重新连接与更新后的包相对应的 OSGi 包。
我使用更新了包,
bundle.update(new FileInputStream(new File(filePath)));
我需要刷新受影响的 bundle 才能影响更新。
我该怎么做?...
最佳答案
BundleContext bcx = bundle.getBundleContext();
Bundle systemBundle = bcx.getBundle(0);
bundle.update(new FileInputStream(new File(filePath)));
FrameworkWiring frameworkWiring = systemBundle.adapt(FrameworkWiring.class);
frameworkWiring.refreshBundles(null);
请注意 refreshBundles 是一个异步函数调用。因此,如果你想在 bundle 刷新时捕获事件,你必须传递一个 FrameworkListener 作为第二个参数。
关于java - OSGi 包更新后如何重新布线框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23360914/