我需要在插件中监听透视状态更改,我在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
有什么建议吗?
答案 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();