启动:经常出现“BundleException:状态正在改变”

时间:2016-04-13 10:23:11

标签: eclipse-plugin eclipse-rcp

我需要在插件中监听透视状态更改,我在IStartup中进行了

public void earlyStartup() {
  Display.getDefault().asyncExec(new Runnable() {
  @Override
  public void run() {
     // register perspective listener to workbench
  }
 });

}

在新工作区中启动IDE,在插件更新后,我经常看到下面的异常。

!MESSAGE While loading class "com.test.Startup", thread "Thread[Worker-2,5,main]" timed out waiting (5008ms) for thread "Thread[Thread-6,5,main]" to finish starting bundle "test.startup [55]". 
To avoid deadlock, thread "Thread[Worker-2,5,main]" is proceeding but "com.test.Startup" may not be fully initialized.
!STACK 0
org.osgi.framework.BundleException: State change in progress for bundle 

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

最后我使用我的'BundleListener'在bundle启动后注册像'IWindowCloseHandler'和'IPerspectiveListener'等听众。

character varying[]

这解决了类加载问题。

答案 1 :(得分:0)

我建议最好在你的Perspective工厂中调用Plugin Activator类的start()方法。这样可以避免你所面临的错误。

在start()方法结束时调用它。这不会影响插件加载的性能。

Job job = new UIJob("Add Perspective listener") {
    public IStatus runInUIThread(IProgressMonitor monitor) {
        addPerspectiveListener();
        return Status.OK_STATUS;
    }
};
job.setSystem(true);
job.schedule();