org.eclipse.swt.SWTException:无法执行runnable(java.lang.NullPointerException)

时间:2016-11-15 07:34:11

标签: java cocoa nullpointerexception swt

有一个使用SWT框架的项目。不幸的是,我目前遇到了这个问题,我真的不知道如何解决这个问题,对于我遇到这个问题有什么见解?

org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
    at org.eclipse.swt.SWT.error(SWT.java:4397)
    at org.eclipse.swt.SWT.error(SWT.java:4312)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3976)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3653)
    ... 4 more
Caused by: java.lang.NullPointerException
    at org.eclipse.swt.widgets.Control.internal_new_GC(Control.java:2126)
    at org.eclipse.swt.graphics.GC.<init>(GC.java:171)
    at org.eclipse.swt.graphics.GC.<init>(GC.java:134)
    at org.eclipse.swt.widgets.Tree.setScrollWidth(Tree.java:2951)
    at org.eclipse.swt.widgets.Tree.setScrollWidth(Tree.java:2944)
    at org.eclipse.swt.widgets.Tree.removeAll(Tree.java:2392)
    ... <internal code>
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
    ... 6 more

我对隐藏<internal code>道歉,该项目是保密的。试图制作一个片段来复制它,似乎无法很好地复制它。

此堆栈跟踪行org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)与此maven依赖关系相关:

  • GroupId:org.eclipse.swt
  • ArtifactId:org.eclipse.swt.cocoa.macosx
  • 版本:4.2.1

1 个答案:

答案 0 :(得分:1)

当Runnable中的父级为null(未分配)时,您可能会遇到此错误,因此检查是否有任何参数为null可能会解决此问题。

Display.getDefault().syncExec(new Runnable() {
    public void run() {
        parent.addDisposeListener(new DisposeListener() {
            public void widgetDisposed(DisposeEvent event) {
                dispose();
            }
        });
    }
});