Eclipse插件捆绑在启动状态

我使用Eclipse创建了一个新的插件项目,为我创建了一个默认的Activator 。 在调试(作为Eclipse Application运行)时,我注意到没有调用此激活器的start()stop()方法。

在关于在Eclipse中看不到捆绑包时该怎么做的指南之后我偶然发现了以下结果。

  • 使用ss命令,我可以看到我的包已列出。
  • 我的包的状态是’ 开始 ‘

捆绑包正在启动过程中。 当start方法处于活动状态时,bundle处于STARTING状态。 当bundle的BundleActivator.start(BundleContext)被调用时,bundle必须处于这种状态。 如果BundleActivator.start方法完成无exception,则bundle已成功启动并且必须移至ACTIVE状态。

start方法的第一行放置的断点不会被命中。 System.out.println也不会出现在控制台中。 什么可能导致start方法没有被调用,因此状态陷入STARTING

以下内容并未解决OSGi控制台报告该插件为STARTING的事实,但这是我在Eclipse启动后立即启动插件的方法。

正如Chris Gerken在评论中指出的那样 ,启动代码仅在您尝试使用其中一个插件扩展时运行。

使用org.eclipse.ui.startup扩展名,您可以注册一个想要在启动时激活的插件。 可以使用清单编辑器进行设置。

  1. org.eclipse.ui添加为“依赖关系”选项卡中的依赖项。
  2. 在“扩展”选项卡中,添加启动扩展( org.eclipse.ui.startup )。
  3. 在“扩展元素详细信息”下面提供了一个实现org.eclipse.ui.IStartup的类。

启动扩展

TaskManager.java

 public class TaskManager implements IStartup { @Override public void earlyStartup() { // This will get called when Eclipse is started, // after the GUI has been initialized. } }