最近搞得项目用到了osgi,之前完全没听说过,在网上查了下貌似也是很老的技术,使用范围不是很广的样子,但是既然用到了就要学习一下嘛,先写个简单的小demo,查阅了几个博客,按照正常情况下执行总是报错,后来经过一番研究,终于解决了报错问题,现记录如下。
1 .首先new-other,选择创建plug-in Project,见下图
2 .点击next,选择osgi framework,指定配置为标准,具体内容见下图,这里工程名随便起
3 .点击next,进入下一步,这里默认选项即可,见下图
4 .接下来进入next下一步,选择模板为Hello OSGI Bundle,内容见下图
5 .之后点击next,最后点击finish,这里会自动创建号工程,同时自动生成三个文件
6 .一个是Activator.java文件,另一个是MANIFEST.MF文件,还有一个是build.properties文件,内容见下图
7 .接下来右击项目,点击run as,选择run configuration,选择osgi framework,这里如果只是在workspace中选择自己创建的osgi 项目,进行run,会报错,之前一直卡在这里,报的错是下面这个
8 .那么就在target-platform中添加这个console即可,但是还是会报错,经过多次调试,只需要加上下面这五个bundle即可成功运行,具体见下图
9 .在target-platform中添加上面5个bundle之后,点击run,执行,之后在控制台输出Hello World!,显示osgi命令行,同时可以输入ss查看当前已经安装好的bundle都有哪些,见下图,而且此时烦人的报错也不见了,,,,之前一直卡在这里解决不了,后来一个一个添加bundle终于解决了。。。。
10 .以上就是在eclipse上编写bundle的一个小例子,也算对osgi有了一个感性认知吧,所谓bundle其实就是osgi化的jar包。与普通jar包最大的区别就是不同项目下的bundle可以互相调用。这其实就是模块化的思想。
11 .之后由于osgi的项目会让不同项目之间相互引用,那么首先要将项目bundle化,也就是将项目导成插件,右击刚才创建的项目,选择Export,具体选择下面这个选项
12.点击next,按照下面的图片进行配置,选择之前创建的项目,之后点击finish,就会在指定位置生成一个plugins文件夹,里面就是导出的osgi化的bundle,
13 .以上就是将一个osgi项目导出插件化的bundle的具体步骤。那么osgi的东西先写到这里吧,睡觉。