我们有一个应用:swing写的客户端软件,其中有个email button的写邮件操作。在实现整个功能之后,我测试了很多遍都没有出现什么问题。但是我的一位同事,在连续的拷贝,粘贴,删除,保存,email之后,出现了如下的error:
[2012-09-13 16:32:15,351] FATAL [AWT-EventQueue-0] (post_mail:SelectedSizingResultPanel.java:345) : - error
org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:3884)
at org.eclipse.swt.SWT.error(SWT.java:3799)
at org.eclipse.swt.SWT.error(SWT.java:3770)
at org.eclipse.swt.widgets.Widget.error(Widget.java:463)
at org.eclipse.swt.widgets.Shell.<init>(Shell.java:282)
at org.eclipse.swt.widgets.Shell.<init>(Shell.java:273)
at org.eclipse.swt.widgets.Shell.<init>(Shell.java:223)
at view.SendEmail.execute(SendEmail.java:26)
......
因为我重现不了,这个情况,强烈要求同事重新操作,重现这个error,可是不管后来怎么操作,都无法再现。
于是我只好根据上面的log,和具体的代码来查找原因。
错误出现在shell这个地方,但是shell的代码是这样子写的。
Display display = Display.getCurrent();
Shell shell = new Shell(display);
所以我强烈怀疑是display的问题。
于是我google是Display.getCurrent()。找到如下的描述
说得到一个Display实例有两种方法,其一就是:Display.getCurrent()
A display is forever tied to the thread that created it, and a thread can have only one active display; a display is active until it is disposed of
大致是说:一个显示界面和创建它的线程永久的联系在一起,并且一个线程只能拥有一个可用的显示界面;这个显示界面在显示期间一直有效。
If you call Display.getCurrent, it returns the display that was created in that thread, if any. Here is an example:
public static Display getDisplay() {
Display display = Display.getCurrent();
//may be null if outside the UI thread
if (display == null)
display = Display.getDefault();
return display;
}
之后我查了:Display.getCurrent()和Display.getDefault()的区别
philips 写道
Display.getCurrent() 当当前代码和当前的界面(UI)线程在同一个线程时,将返回当前的Display对象。反之,当不在同一个线程时,则返回null。
Display.getDefault() 显然,针对线程使用。将返回最近的一个UI线程的Display对象。
于是我严重怀疑是我同事在连续操作的时候,导致Display.getCurrent()得到了一个null值,然后Shell shell = new Shell(display);的时候,出错了。我应该只要加上判null的代码就可以了
关于Display.getCurrent()和Display.getDefault()参考
http://jarg.iteye.com/blog/840214
分享到:
相关推荐
Android的MQTT消息推送接收所需jar包,修复了MqttAndroidClient会出现throw new IllegalArgumentException Invalid ClientHandle...implementation files('libs/org.eclipse.paho.android.service-1.1.1-sources.jar')
NULL 博文链接:https://wilian.iteye.com/blog/1992365
在XML Schema设计中,"cvc-complex-type.2.4.d: Invalid content was found" 是一个常见的错误信息,这通常意味着在解析XML文档时,遇到了不符合定义的复杂类型的内容。这个错误通常涉及到XML Schema的约束规则,即...
Invalid Multibyte Character Sequence 警告解析 在编程中,特别是在嵌入式系统开发中,我们经常会遇到Invalid Multibyte Character Sequence 警告。这个警告通常来自于编译器,告知我们存在非法的多字节字符序列。...
### 错误解析:Caused by: android.system.ErrnoException: write failed: ENOSPC (No space left 在Android开发过程中,可能会遇到“Caused by: android.system.ErrnoException: write failed: ENOSPC (No space ...
找到eclipse安装目录的features,将其目录中的org.sonatype.m2e.mavenarchiver.feature_0.NNN文件夹删除(也可能不存在),拷贝features/org.sonatype.m2e.mavenarchiver.feature_0.17.2.201609252051到features ...
Maven坐标:org.apache.httpcomponents:httpclient:4.5.12; 标签:apache、httpcomponents、httpclient、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...
nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'error_view' of bean class [com.demo.controller.action.AuthorAction]: Bean property 'error_view' is not ...
在ROS(Robot Operating System)开发过程中,遇到`rlexception: invalid roslaunch xml syntax: no element found: line 1, column 0`这样的错误信息时,表明当前的`.launch`文件存在XML语法错误。具体来说,可能是...
nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'transactionManagerBeanName' of bean class [org.springframework.transaction.interceptor....
再和前台对接的时候一直报错:invalid url domain 在网上查找了很多资料,有说端口的问题,也有其它各种原因的,一大堆,最后我发现以上的说法都不准确,这是我配置的地址(错误的地址) 把配置地址的http://去掉...
STM32F10x系列是意法半导体(STMicroelectronics)推出的基于ARM Cortex-M3内核的微控制器,广泛应用于各种嵌入式系统设计。`STM32F10x_startup`指的是针对该系列芯片的启动文件,通常以`.s`格式存在,它是微控制器...
Maven坐标:org.apache.yetus:audience-annotations:0.5.0; 标签:apache、yetus、audience、annotations、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览...
在Python开发过程中,遇到"error: invalid command ‘egg-info‘"这样的报错通常是由于安装或配置Setuptools库时出现了问题。Setuptools是Python项目构建、安装和管理的工具,而`egg-info`命令用于生成项目的元数据...
大家可以直接使用 Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property ...
出现以上的情况主要的原因是因为在主配置文件标签没正确的指向映射接口的配置文件。 解决方案:1.检查的name是否正确,如我的name属性填的就是com.it.dao 2、检查的class属性或resource属性,我resource这里写的是...
10. **`"upstream sent invalid header while reading response header from upstream"`**:后端服务器发送的响应头部无效。 11. **`"client intended to send too large body"`**:客户端发送的数据体超过了配置的...
java.lang.IllegalStateException: Invalid name=“com.alibaba.dubbo.config.ProtocolConfig#0” contains illegal character, only digit, letter, ‘-’, ‘_’ or ‘.’ is legal 原因: 如果没有指定id属性,...
Caused by: MetaException(message:Got exception: org.apache.hadoop.hive.metastore.api.MetaException javax.jdo.JDODataStoreException: Error executing JDOQL query “SELECT “THIS”.”NAME” AS NUCORDER0 ...
jave-1.0.2.3.jar完全解决如下问题: 1、报错:it.sauronsoftware.jave.EncoderException: Metadata: 2、可以转换,可以播放,但是有个异常:it.sauronsoftware.jave.EncoderException: video:0kB audio:1301kB ...