OSGI之equinox框架的Abundle无法导入Bbundle导出的包

昨天遇到一问题,Abundle导入b.impl包,Bbundle导出b.impl包。结果运行时发现在Eclipse中正常,移植到外面用bat启动就会抛出一个java.lang.ClassNotFoundException找不到b.impl包中的类的异常。我检查了两个bundle导入、导出的配置和版本,bundle的启动状态,最后检查了Abundle调用出错类时当前线程的classLoader和Bbundle的Activator的ClassLoader是同一个对象。反复启动的n十次。工程建啦又删、删了在建仍然没有发现问题。就这样一个下午过去了,仍然没结果。最后我使用equinox命令中packages命令查看了Bbundle导入包的状态,突然发现Bundle确实导出成功了,但是没人任何bundle导入的记录。于是我开始研究Bundle的导入、导出规则。开始在包的导入、导出部分添加了版本号。然后在用packages去查看,发现仍然不行,这时我发现查询结果显示的包的版本号是我修改之前的版本。我晕了。难道equinox是有缓存的不成,百度了一下重要找到了一个参数“osgi.clean=true”

该参数的意义是“如果该参数值为"true",系统在启动时,会清除OSGi框架及Eclipse运行时缓存的任何数据。该参数会清除Bundle依赖缓存和eclipse扩展注册缓存。适用该参数可以强制eclipse重新初始化上述缓存。”在config.ini文件里添加这个配置后重新启动框架。发现一切正常了。

结论是我在某次改动导出的bundle配置是有错误,由于框架的缓存机制事这个问题一直缓存在内存当中。即使后面修改正确了也不能及时的显现出来。浪费了我一天的时间。哎。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值