6

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

遵循关于当你的包在 Eclipse 中不可见时该怎么做的指南,我偶然发现了以下结果。

  • 使用该ss命令,我可以看到我的捆绑包已列出。
  • 我的捆绑包的状态是“开始

捆绑包正在启动中。捆绑包处于其方法处于活动STARTING 状态时的状态。调用start捆绑包时,捆绑包必须处于此状态。BundleActivator.start(BundleContext)如果该BundleActivator.start方法无异常完成,则该包已成功启动并且必须移动到该ACTIVE状态。

放置在start方法第一行的断点不会被命中。两者都没有System.out.println出现在控制台中。什么可能导致start方法没有被调用,从而导致状态被卡住STARTING

4

1 回答 1

3

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

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

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

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

启动扩展

任务管理器.java

public class TaskManager implements IStartup
{
    @Override
    public void earlyStartup()
    {
        // This will get called when Eclipse is started,
        // after the GUI has been initialized.
    }
}
于 2012-12-10T16:02:00.093 回答