Mac OSX(Eclipse Helios)上的 SWT 无效线程访问
Posted
技术标签:
【中文标题】Mac OSX(Eclipse Helios)上的 SWT 无效线程访问【英文标题】:SWT Invalid Thread Access on Mac OSX (Eclipse Helios) 【发布时间】:2011-12-15 19:19:47 【问题描述】:我有最简单的 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 的限制,必须在主线程上创建显示。 线程“主”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"
...
编辑:
现在错误消失了,我从使用swt-debug.jar
切换到swt.jar
。如果有人知道为什么调试 jar 会导致此错误,我很想知道...
【问题讨论】:
【参考方案1】:您需要在启动应用程序时使用-XstartOnFirstThread
开关。 SWT FAQ 上的 question 解释了原因。
【讨论】:
以上是关于Mac OSX(Eclipse Helios)上的 SWT 无效线程访问的主要内容,如果未能解决你的问题,请参考以下文章
Win 7 上的 Eclipse Helios 中的 Ctrl 空间不起作用
启动失败。未找到二进制文件。 Eclipse Helios 上的 CDT
windows下使用mingw/gdb无法调试eclipse helios cdt上的小程序,控制台死机