0

我创建了 3 个不同的 OSGI 插件(作为 Eclipse 插件项目开发)在 Raspberry PI 上的 Eclipse Kura 中运行。两个插件的行为就像一个库,提供了共同使用的类。第三个插件是使用 Kura 提供的机制与串口通信的服务。后者已按照 Kura 入门页面中的说明进行开发。这两个库插件是基本的插件项目。

一切都已解决并正确启动,并且似乎按预期工作,因此没有什么特别之处。重新启动 PI 时会出现问题,导致 OSGI 引擎也重新启动。这两个库插件似乎被重新启动删除了。串行通信服务仍然存在,但由于缺少依赖关系而无法启动。

我的问题是:是什么导致插件在重新启动时被删除,如何防止这种情况发生?感谢您阅读这篇文章!

4

2 回答 2

1

我建议您将捆绑包导出为 OSGi 部署包。
然后将 DP 复制到您的 Pi 中并告诉 Kura 在启动时加载它。

我编写了一个示例项目,您可以使用它来使用 Maven 创建部署包,或者您可以使用 bash 脚本打包您的包。

打包后,将您的 DP 复制到/opt/eclipse/kura/kura/packages/文件夹中。然后编辑/opt/eclipse/kura/kura/dpa.properties文件并为您的 DP 添加一行

yourbundles=file\:/opt/eclipse/kura/kura/packages/your-bundles.dp

这是有关如何操作的官方 Kura 文档

替代方案是使用 Kura 的 Web UI 或DEPLOY cloudlet 安装 DP。

于 2015-12-31T00:40:40.167 回答
0

正如您在说明中所述,该install命令用于添加依赖包。OSGi 通常是持久的,因此如果您以任何方式(包括使用install命令)安装捆绑软件,它们仍将存在并在您下次启动 OSGi 时处于相同状态。

为了让它工作,OSGi 有一个“storage”文件夹。这是通过设置org.osgi.framework.storage属性来配置的,在 Equinox 中默认为./configuration. 您的启动器可能会清除此目录,从而导致 OSGi 丢失其持久状态。

有两种可能的解决方案:

  1. 不要清除 OSGi 存储文件夹。
  2. 将您的启动器应用程序配置为始终包含您想要的所有捆绑包。

我实际上建议两者都做。OSGi 是持久的。install但是要求用户键入命令以使应用程序工作也不是真正的用户友好。

于 2015-12-30T18:14:45.257 回答