OSGi框架入门与模块版本管理
1. 在Felix中启动捆绑包
在Felix中启动捆绑包,需使用Felix shell中的 start
命令,此命令会触发 BundleActivator.start()
回调。例如:
g! felix:start 4
g! felix:start 5
要注意,这里使用的ID是安装命令返回的ID。执行上述命令后,可能会得到一个堆栈跟踪,且没有出现“Hello World”消息。查看堆栈信息,会发现如下错误:
Caused by: java.lang.NoClassDefFoundError: org/osgi/framework/BundleActivator
这是因为 PrinterClientActivator
类继承自 BundleActivator
,而该类位于 org.osgi.framework
包中,所以需要在捆绑包的清单文件的 Import-Package
头中添加此包:
Manifest-Version: 1.0
Bundle-SymbolicName: helloworld.client
Import-Package: manning.osgi.helloworld,
org.osgi.framework
Bundle-Activator: manning.os