Eclipse插件包卡在Starting状态

时间:2012-12-10 10:30:09

标签: java eclipse-plugin osgi

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

关注the guide on what to do when your bundle isn't visible in Eclipse我偶然发现了以下结果。

  • 使用ss命令,我可以看到我的捆绑包。
  • 我的捆绑包的状态为“Starting
  

捆绑包正在启动过程中。捆绑包在STARTING   当start方法处于活动状态时的状态。捆绑包必须处于此状态   当捆绑的BundleActivator.start(BundleContext)被调用时。如果   BundleActivator.start方法毫无例外地完成,然后是   bundle已成功启动,必须​​移至ACTIVE状态。

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

1 个答案:

答案 0 :(得分:3)

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

作为Chris Gerken points out in a comment,启动代码仅在您尝试使用其中一个插件扩展时运行。

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

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

    startup extension

    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.
        }
    }