У меня есть простейшая из всех простых программ SWT (она пока еще не показывает мир привет):
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: Недопустимый доступ к потоку в org.eclipse.swt.SWT.error(SWT.java:4282) в org.eclipse.swt.SWT.error(SWT.java:4197) в org.eclipse.swt.SWT.error(SWT.java:4168) в org.eclipse.swt.widgets.Display.error(Display.java:1065) в org.eclipse.swt.widgets.Display.createDisplay(Display.java:822) в org.eclipse.swt.widgets.Display.create(Display.java:805) в org.eclipse.swt.graphics.Device. (Device.java:130) в org.eclipse.swt.widgets.Display. (Display.java:696) в org.eclipse.swt.widgets.Display. (Display.java:687) в com.samples.swt.first.Main.main(Main.java:8)
Насколько я могу судить, я делаю все правильно. Почему я получаю эту ошибку? В нем говорится, что Display
должен быть создан в основном потоке, и, насколько я могу судить, он создается в основном потоке. Затем он продолжает говорить о Exception in thread "main"
...
EDIT:
Ошибка исчезла, я переключился с swt-debug.jar
на swt.jar
. Если кто-нибудь знает, почему отладочная банка вызывает эту ошибку, я хотел бы узнать...