Eclipse OSGI如何用Fragment的类覆盖掉Host Plugin里的类

 链接:http://blog.sina.com.cn/s/blog_7f9b8c510101d4hs.html

有这样一个需求,希望用Fragment增强现有Plugin的功能,但是Eclipse的OSGI classloader是优先加载Host Plugin的,但我又不想修改classloader。查了一下,有一个比较Tricky的方法,记录一下:

 

1.在Fragment项目中编写同名类,注意包名也必须一致。

2.修改Fragment的build configuration,新建library,如library.jar,添加src到目录中。删除掉原来的“.”这个library。添加library.jar到classpath中。

3.在Host Plugin里,修改MANIFEST.MF,添加library.jar到classpath中,注意HostPlugin不能包含library.jar.

 

注意:classpath的格式必须是library.jar,. fragment和host plugin必须都如此设置,保证library.jar中的类被优先加载。

 

以上做好后,运行plugin,可以看到fragment里的同名类已经覆盖掉Host Plugin的类了。

这样做的另外一个好处,就是可以直接将fragment打包成文件夹形式,方便修改国际化和配置文件。

 

来源:

http://wiki.eclipse.org/Steps_to_use_Fragments_to_patch_a_plug-in

http://stackoverflow.com/questions/4507411/osgi-fragments-patching-bugs-in-eclipse-plug-ins

https://bugs.eclipse.org/bugs/show_bug.cgi?id=126687

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值