微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – SWT在Mac OSX上无效线程访问(Eclipse Helios)

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

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

***WARNING: display must be created on main thread due to Cocoa restrictions.
Exception in thread “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必须在主线程上创建,并且据我所知,它正在主线程上创建.然后继续谈论线程“主”中的异常…

编辑:

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

解决方法

启动应用程序时,需要使用-XstartOnFirstThread开关.这个 question的SWT常见问题解释了原因.

原文地址:https://www.jb51.cc/java/124292.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐