首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

浅析OSGI的bundle依托

2012-06-27 
浅析OSGI的bundle依赖Bundle是OSGI中的基础元件,不同的bundle之间可以相互依赖、引用,这样许多bundle才会共

浅析OSGI的bundle依赖

Bundle是OSGI中的基础元件,不同的bundle之间可以相互依赖、引用,这样许多bundle才会共同协作,实现一些比较复杂的功能。Bundle的依赖一直是一个比较棘手的问题,包括Lazy start等,下面我们具体Bundle依赖到底是怎么一回事。

测试场景:Eclipse 3.6, Equinox?

先看看基础的依赖问题

?

具体见?http://www.xeclipse.com/?p=1165

?

?


当A,B插件都存在a.b.DemoTest的类,都导出了a.b包,在C插件中引入A,B插件,到底是用那个插件的a.b.DemoTest呢?
当A,B插件都存在a.b.DemoTest的类,都导出了a.b包,在C插件中引入A,B插件,到底是用那个插件的a.b.DemoTest呢?
这个嘛 很容易测试的,先预测一下是根据依赖中的顺序来的。因为这个一般是class loader的顺序吧?
当A,B插件都存在a.b.DemoTest的类,都导出了a.b包,在C插件中引入A,B插件,到底是用那个插件的a.b.DemoTest呢?
测试通过,我的判断正确,按照
Require-Bundle: org.salever.osgi.depends.sdk2;bundle-version="1.0.0",
org.salever.osgi.depends.sdk1;bundle-version="1.0.0"
的顺序来决定用哪一个哦 这样其实很容易出现运行时的错误哦
当A,B插件都存在a.b.DemoTest的类,都导出了a.b包,在C插件中引入A,B插件,到底是用那个插件的a.b.DemoTest呢?
测试通过,我的判断正确,按照
Require-Bundle: org.salever.osgi.depends.sdk2;bundle-version="1.0.0",
org.salever.osgi.depends.sdk1;bundle-version="1.0.0"
的顺序来决定用哪一个哦 这样其实很容易出现运行时的错误哦

应该是加载的顺序吧?至于你在eclipse依赖里面的顺序只是一个参考?
当A,B插件都存在a.b.DemoTest的类,都导出了a.b包,在C插件中引入A,B插件,到底是用那个插件的a.b.DemoTest呢?
测试通过,我的判断正确,按照
Require-Bundle: org.salever.osgi.depends.sdk2;bundle-version="1.0.0",
org.salever.osgi.depends.sdk1;bundle-version="1.0.0"
的顺序来决定用哪一个哦 这样其实很容易出现运行时的错误哦

应该是加载的顺序吧?至于你在eclipse依赖里面的顺序只是一个参考?

好像就是依赖的顺序

热点排行