我在Raspberry PI上创建了3个不同的OSGI插件(开发为Eclipse插件项目),在Eclipse Kura中运行。两个插件表现为提供常用类别的库。第三个插件是使用Kura提供的机制与串行端口通信的服务。后者是按照Kura入门页面所描述的那样开发的。这两个库插件是基本的插件项目。
一切都得到了解决并正确启动,似乎按预期工作,所以没什么特别的。重新启动PI时会出现问题,导致OSGI引擎也会重新启动。这两个库插件似乎被重启删除了。串行通信服务仍然存在,但由于缺少依赖性而无法启动。
我的问题是:是什么原因导致插件在重启时被删除,以及如何防止这种情况发生?感谢您阅读这篇文章!
答案 0 :(得分:1)
我建议您将捆绑包导出为OSGi部署包 然后在你的Pi中复制DP并告诉Kura在启动时加载它。
我编写了一个sample project,您可以使用它来创建使用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
This is the official Kura documentation on how to do it
替代方案是使用Kura的Web UI或DEPLOY cloudlet安装DP。
答案 1 :(得分:0)
正如您在澄清中所述,install
命令用于添加依赖项包。 OSGi通常是持久的,因此如果以任何方式(包括使用install
命令)安装bundle,它们将在您下次启动OSGi时仍然存在且处于相同状态。
为了实现这一点,OSGi有一个"存储"夹。这是通过设置org.osgi.framework.storage
属性来配置的,该属性在Equinox中默认为./configuration
。您的启动程序可能会清除此目录,从而导致OSGi失去其持久状态。
有两种可能的解决方案:
我实际上建议同时做这两件事。 OSGi 意味着是持久的;但是,要求用户键入install
命令才能使应用程序正常工作,这对用户不是很友好。