SWT error with eclispe Mars in RCP application java.lang.NoSuchMethodError: org.eclipse.swt.widgets.ToolBar.requestLayout()V

SWT error with eclispe Mars in RCP application java.lang.NoSuchMethodError: org.eclipse.swt.widgets.ToolBar.requestLayout()V

我们有一个现有的 RCP 应用程序可以完美地与 eclipse 一起工作Luna.We 正计划将 eclipse 迁移到 Mars.While 将 eclipse 迁移到 MARS 我们在启动工具和工具时遇到 SWT 异常window 未正确启动。

请帮忙解决这个问题。 下面给出了异常堆栈跟踪。

java.lang.NoSuchMethodError: org.eclipse.swt.widgets.Control.requestLayout()V 在 org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.subscribeChildrenHandler(PartRenderingEngine.java:301) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(来源不明) 在 java.lang.reflect.Method.invoke(来源不明) 在 org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) 在 org.eclipse.e4.core.di.internal.extensions.EventObjectSupplier$DIEventHandler.handleEvent(EventObjectSupplier.java:80) 在 org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:201) 在 org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197) 在 org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) 在 org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 在 org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)

堆栈跟踪显示您正在使用 Eclipse Neon (4.6) 中的 PartRenderingEngine。这需要在 SWT 代码中使用 Control.requestLayout 方法。这个方法比较新,你用的SWT版本没有。

从你的问题中不清楚你是如何设法得到这样的 RCP 的。您必须从单个 Eclipse 版本构建 RCP,您不能安全地混合来自不同版本的代码。