我有一个基于昼夜平分点的应用程序。我需要更新一个包并重新连接与更新的包相对应的OSGi包。
我使用
更新了这个包bundle.update(new FileInputStream(new File(filePath)));
我需要刷新受影响的捆绑包才能使更新受到影响。
我该怎么做?...
答案 0 :(得分:5)
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是一个异步函数调用。因此,如果要在刷新包时捕获事件,则必须将FrameworkListener作为第二个参数传递。