eclipse plugin启动顺序

依赖关系

两个plugin test1和test2;
1. test1和test2没有依赖关系
因为没有显式说明是early start,所以使用lazy start,只有在真正使用到时,才会调用具体的构造函数和start方法;
test1 contructor
test1 start
test2 contructor
test2 start

2. test2依赖于test1
这个依赖分三种:
2.1 如果只是在test2的MANIFEST.MF文件中的Require-Bundle中出现;
这时两个是没有关系的;

2.2 如果在test2中的java文件中出现import test1中的包:
这时两个还是没有关系的;

2.3 在test2中使用到了test1中的类:
在使用的地方才会初始化test1;例如在test2的构造函数处使用test1中的类:
test2 contructor
test1 contructor
test1 start
test2 start

3. 相互依赖
如果出现相互依赖,运行程序的时候,会提示有错误,但是如果不管错误提示,继续执行的话,还是可以启动;
但是最好还是将相互依赖打破,因为这样不符合设计规范。

4. early starup

一般不推荐使用early startup,因为eclipse设计时就是为了快速启动,才将显示(plugin.xml)和实现(*.java,*.icon, etc)分离的。
使用early startup,需要在plugin.xml文件中追加一个extension org.eclipse.ui.startup,同事实现IStartup接口。

这样eclipse就会使用单独的进程启动该plugin。
如果有依赖的plugin,它同时将依赖的plugin初始化;
需要注意的是:如果没有实现IStartup,eclipse会报错,但是也会将plugin在单独的进程中启动。
实现了IStartup:
test2 contructor
test1 contructor
test1 start
test2 start
test2 early startup

没有实现IStartup:
test2 contructor
test1 contructor
test1 start
test2 start

!ENTRY org.eclipse.ui 4 4 2011-06-17 10:58:47.328
!MESSAGE Bad extension specification

!ENTRY test2 4 0 2011-06-17 10:58:47.359
!MESSAGE startup class must implement org.eclipse.ui.IStartup

 

refs:

http://www.peterfriese.de/why-you-should-be-careful-when-using-early-startup/
https://bugs.eclipse.org/bugs/show_bug.cgi?id=91603

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值