Eclipse插件Lazy Start实现原理分析2011-08-13朱兴每次提到有关Eclipse插件启动的问题的时候,脑子中自然的反应就是:可以设定为预先启动 (org.eclipse.ui.startup),否则默认的情况下是懒启动(Lazy Start),只有当插件中的功能被真正 调用的时候,插件才会被启动。可能是人也跟着变懒了,也一直没有去留心Eclipse底层是怎么实现这种 懒加载的,只是有个大致的猜测,估计又是用hook机制了。昨天闲着具体看了一下实现,果然是类似的实 现。下面就大致和大家分享一下,说的不一定准确,仅供参考 ~_~。直接进入主题,我们的Eclipse实例启动肯定要构造工作区,那么ResourcesPlugin肯定会被启动,我 们就在ResourcesPlugin.startup方法设置一个断点,调试栈如下:


假设我们对插件类型加载细节不知道,猜测大致过程如下:1、DefaultClassLoader加载类型(org.eclipse.core.resources.IContainer)2、EclipseLazyStarter.preFindLocalClass3、启动资源插件:ResourcesPlugin.startup