原文引用自:http://blog.csdn.net/vking_wang/article/details/13240715
Require-Bundle的缺点
1、不知道究竟导入了哪些包
我们不知道究竟导入了哪些包,在不同版本中导入的包可能不同;
2、导出包的bundle重构后,会影响导入bundle
如果bundleA日渐臃肿,打算将其分拆成两个bundle。如果使用Import-Package,则仍能正常工作:
但是如果使用Require-Bundle,则新的bundle不会被bundleB导入;可能会抛出NoClassDefFoundErrors。
3、导致导入大量无用的包
即便只依赖bundleA中的一小部分代码,也需要导入其中的所有包;而bundleA又会依赖其他bundle,最终导致导入了大量无用的包。
为什么引入Require-Bundle?
引入Require-Bundle主要是因为Eclipse的历史遗留问题。在使用OSGi之前,Eclipse是基于全模块依赖的,如果OSGi仅仅支持Import-Package,要想让成千上万已有的Eclipse插件正常工作,几乎是不可能的。