我需要听取插件中透视图状态的变化,这是我在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 有什么建议吗?
发布于 2016-05-12 09:13:44
最后,在包启动后,我将使用“BundleListener”注册侦听器,如“IWindowCloseHandler”和“IPerspectiveListener”等。
public class StudioBundleListener implements BundleListener {
@Override
public void bundleChanged(BundleEvent event) {
String symbolicName = event.getBundle().getSymbolicName();
int type = event.getType();
if(symbolicName.equals(MYPlugin.PLUGIN_ID) && type == BundleEvent.STARTED) {
//Register my listeners
}
}
}这解决了类负载问题。
发布于 2016-04-13 12:35:49
我建议最好在透视工厂插件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();https://stackoverflow.com/questions/36595500
复制相似问题