我有一个正在运行的 equinox osgi 框架,其中包含一堆启动包。现在我使用 osgi 控制台通过 'update' 更新一个包。 (或使用提供的方法:bundle.update(url));
一切正常...但是如果我完全重新启动 osgi 框架,之前更新的包将再次处于原始状态(就像更新之前一样)。
我正在使用 eclipse 的 update.configurator 搜索插件目录中的所有 bundle 并安装它们,但我认为它可以识别 bundle 是否已更新。
有人可以告诉我我缺少什么吗?
谢谢, 迈克尔·满庚
最佳答案
您如何启动 Equinox?您是从 -clean 开始的吗(这会清除所有更新)?
请注意,'udpate' 只是更新内存中运行的副本,而不是更改磁盘上原始 JAR 的任何位。如果您启动 Equinox 并传递旧包(而不是新包),那么它可能会返回旧状态。
P2 在某种程度上阻碍了假设,一旦你削减了一个包的位,然后它就保持不变 - 换句话说,P2 首先有效地中断了 bundle.update() 的执行。但是,您可能应该管理磁盘上的位,这样即使有人执行了 -clean,您也可以获得正确的数据。
关于java - 春分 : Update of bundle lost after framework restart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1431736/