我使用Eclipse创建了一个新的插件项目,为我创建了一个默认的Activator
。在调试(作为Eclipse Application运行)时,我注意到没有调用此激活器的start()
和stop()
方法。
关注the guide on what to do when your bundle isn't visible in Eclipse我偶然发现了以下结果。
ss
命令,我可以看到我的捆绑包。捆绑包正在启动过程中。捆绑包在
STARTING
当start
方法处于活动状态时的状态。捆绑包必须处于此状态 当捆绑的BundleActivator.start(BundleContext)
被调用时。如果BundleActivator.start
方法毫无例外地完成,然后是 bundle已成功启动,必须移至ACTIVE
状态。
放置在start
方法第一行的断点不会被击中。 System.out.println
也不会出现在控制台中。什么可能导致start
方法没有被调用,因此状态陷入STARTING
?
答案 0 :(得分:3)
以下内容并未解决OSGi控制台报告插件为STARTING
的事实,但这是我在Eclipse启动后立即启动插件的方法。
作为Chris Gerken points out in a comment,启动代码仅在您尝试使用其中一个插件扩展时运行。
使用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.
}
}