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
扩展名,您可以注册一个想要在启动时激活的插件。 可以使用清单编辑器进行设置。
- 将
org.eclipse.ui
添加为“依赖关系”选项卡中的依赖项。 - 在“扩展”选项卡中,添加启动扩展(
org.eclipse.ui.startup
)。 - 在“扩展元素详细信息”下面提供了一个实现
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. } }