Mac OSX上的SWT无效线程访问(Eclipse Helios)

Mar*_*olt 11 java eclipse swt

我有最简单的所有简单SWT程序(它甚至不显示hello world):

package com.samples.swt.first;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class Main {
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我从Eclipse Helios在Mac OSX上运行它时,我收到以下错误:

***警告:由于Cocoa限制,必须在主线程上创建显示.
线程"main"中的异常org.eclipse.swt.SWTException:org.eclipse.swt.SwT.error(SWT.java:4197)org.eclipse.swt.SWT.error(SWT.java:4282)的无效线程访问)org.eclipse.swt.wt.Display.createDisplay(org.eclipse.swt.wts.wat)上的org.eclipse.swt.wt.SwT.error(SWT.java:4168)org.eclipse.swt. Display.java:822)位于org.eclipse.swt上的org.eclipse.swt.graphs.Device.(Device.java:130)的org.eclipse.swt.widgets.Display.create(Display.java:805).在com.samples.swt.first.Main.main(Main.java:8)的org.eclipse.swt.widgets.Display.(Display.java:687)上的widgets.Display.(Display.java:696)

据我所知,我正在做的一切正确.为什么我收到此错误?它说Display必须在主线程上创建,并且据我所知,它是在主线程上创建的.然后继续讨论Exception in thread "main"......

编辑:

错误现在消失了,我从使用切换swt-debug.jarswt.jar.如果有人知道为什么调试jar会导致这个错误,我很想知道......

小智 19

-XstartOnFirstThread启动应用程序时需要切换.关于SWT FAQ的这个问题解释了原因.