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

我有最简单的所有简单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(); } } 

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

***警告:由于Cocoa限制,必须在主线程上创建显示。
线程“main”中的exceptionorg.eclipse.swt.SWTException:org.eclipse.swt.SWT.error(SWT.java:4197)org.eclipse.swt.SWT.error(SWT.java:4282)的线程访问无效)org.eclipse.swt.wts.wtis.Display.Display.createDisplay(org.eclipse.swt.wts.wat)上的org.eclipse.swt.Swt.SwT.error(SWT.java:4168)org.eclipse.swt。在org.eclipse.swt上的org.eclipse.swt.graphs.Device。(Device.java:130)的org.eclipse.swt.widgets.Display.create(Display.java:805)上的Display.java:822)。在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.jar切换到swt.jar 。 如果有人知道为什么调试jar会导致这个错误,我很想知道……

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