当前位置:  开发笔记 > 编程语言 > 正文

如何诊断无效的线程访问SWTException?

如何解决《如何诊断无效的线程访问SWTException?》经验,为你挑选了1个好方法。

我们正在为客户端定制基于Eclipse RCP的工具.他们无法在其中一台计算机上加载它(它可以在其他计算机上运行),并提供了以下错误日志.

!SESSION 2009-01-23 12:09:05.593 -------------------------------------- --------- eclipse.buildId = unknown java.version = 1.5.0_12 java.vendor = Sun Microsystems Inc. BootLoader常量:OS = win32,ARCH = x86,WS = win32,NL = en_GB命令行参数:-os win32 -ws win32 -arch x86

!ENTRY org.eclipse.osgi 4 0 2009-01-23 12:09:07.500!MESSAGE Bundle com.yantra.yfc.rcp.desktop.ri not found.

!ENTRY org.eclipse.osgi 4 0 2009-01-23 12:09:11.906!MESSAGE应用程序错误!堆栈1 org.eclipse.swt.SWTException:org.eclipse.swt.SWT.error中的无效线程访问(SWT. java:3374)org.eclipse.swt.Swt.WR.::::: or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or (show.java:978)位于org.eclipse.swt.wts.wtis.checkDevice(Display.java:638)的org.eclipse.swt.graphics.Device.dispose(Device.java:261)com.yantra. yfc.rcp.YRCApplication.run(YRCApplication.java:176)atg.eclipse.core.internal.runtime.PlatformActivator $ 1.run(PlatformActivator.java:78)org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)位于org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.在org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)的org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)启动(EclipseAppLauncher.java:68)在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source) org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)org.eclipse.core.launcher.Main.basicRun(Main.java:278)org.eclipse.core.launcher.Main.run (Main.java:973)org.eclipse.core.launcher.Main.main(Main.java:948)core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown)来自org.eclipse.core.launcher.Main.basicRun上的org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)的java.lang.reflect.Method.invoke(未知来源). java:278)org.eclipse.core.launcher.Main.run(Main.java:973)org.eclipse.core.launcher.Main.main(Main.java:948)core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown)来自org.eclipse.core.launcher.Main.basicRun上的org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)的java.lang.reflect.Method.invoke(未知来源). java:278)org.eclipse.core.launcher.Main.run(Main.java:973)org.eclipse.core.launcher.Main.main(Main.java:948)在org.eclipse.core.launcher.Main.basicRun的org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)的java.lang.reflect.Method.invoke(未知来源)中调用(未知来源) (Main.java:278)org.eclipse.core.launcher.Main.run(Main.java:973)org.eclipse.core.launcher.Main.main(Main.java:948)在org.eclipse.core.launcher.Main.basicRun的org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)的java.lang.reflect.Method.invoke(未知来源)中调用(未知来源) (Main.java:278)org.eclipse.core.launcher.Main.run(Main.java:973)org.eclipse.core.launcher.Main.main(Main.java:948)

我搜索了异常,但这似乎发生在人们尝试使用不同线程开发应用程序时.由于我们在任何其他计算机上都没有看到这个问题,所以我不知道可能导致它的原因.

它必须是有问题的机器上的配置问题,因为代码来自供应商(因此可能经过良好测试)并且可以在我们测试过的每台其他机器上运行.

有没有人对该计算机的问题可能背后有什么建议?或者有关可能揭示问题的调查线的建议?



1> zvikico..:

Eclipse中只有一个UI线程.简而言之,规则是:

如果您作为UI操作的一部分被调用(例如事件处理程序,视图初始化),则您处于UI线程中.

调用UI的所有其他操作(例如,需要显示对话框或将信息发送到修改窗口小部件的视图的作业) - 需要与UI线程同步.

这基本上是这样做的:

 Display.getDefault().syncExec( new Runnable() {  public void run() { } });

你的代码进入run方法.您也可以使用该asyncExec方法继续,而无需等待UI完成.

尝试使用上面的代码片段来包装有问题的代码.

编辑:片段中缺少Runnable()的结束括号.添加片段后工作正常.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有