SWT Invalid Thread Access on Mac OSX (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();
    }
}

Когда я запускаю ее на Mac OSX из Eclipse Helios, я получаю следующую ошибку:

***ПРЕДУПРЕЖДЕНИЕ: Дисплей должен быть создан в основном потоке из-за ограничений Cocoa.
Исключение в потоке "main" org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:4282) at org.eclipse.swt.SWT.error(SWT.java:4197) at org.eclipse.swt.SWT.error(SWT.java:4168) at org.eclipse.swt.widgets.Display.error(Display.java:1065) at org.eclipse.swt.widgets.Display.createDisplay(Display.java:822) at org.eclipse.swt.widgets.Display.create(Display.java:805) at org.eclipse.swt.graphics.Device.(Device.java:130) at org.eclipse.swt.widgets.Display.(Display.java:696) at org.eclipse.swt.widgets.Display.(Display.java:687) at com.samples.swt.first.Main.main(Main.java:8)

Насколько я могу судить, я все делаю правильно. Почему я получаю эту ошибку? Здесь говорится, что Display должен быть создан в основном потоке, и, насколько я могу судить, он создается в основном потоке. Затем говорится о Исключении в потоке "main"...

EDIT:

Сейчас ошибка исчезла, я переключился с использования swt-debug.jar на swt.jar. Если кто-нибудь знает, почему отладочный jar вызывает эту ошибку, я был бы рад узнать...

11
задан Marvin Holt 26 October 2011 в 14:59
поделиться