Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 623|回复: 0

解决Eclipse异常关闭后重启报 org.eclipse.swt.SWTException: Invalid thread access 的问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-5 13:31:35 | 显示全部楼层 |阅读模式

    .

    .

    .

    .

    .

    很久没有写博客了,最近实在是太忙,一直想写点干货,但是一直没静下心来学习。

    今天又在加班忙碌之中,结果谁知道越忙碌越出问题。先是 weblogic 没有正常启动,凭经验第一反应就是7001端口被其它程序占用了,然后通过命令查看之后,发现果然是被占用了,占用端口的竟然是Eclipse,查找占用端口的方式请移步至博主的另一篇文章《【windows】查询占用端口的程序——记一次解决webloigc启动失败的过程》。

    Eclipse之前是不占用7011端口的,这次占用估计可能是启动了一个随机端口,恰巧占用了weblogic的web服务端口。既然已经找到了罪魁祸首,那就重启Eclipse吧。谁知点击关闭按钮的时候,没有弹出确认退出的对话框,而是界面直接就消失了,但是进程却没有消失。直觉告诉博主:坏了,可能要出问题。果然不出所料,再次启动就会弹出提示说遇到了一个问题,具体详见 workspace/.metadata/.log 文件。博主打开这个日志文件一看,里面报了一个异常:

    org.eclipse.swt.SWTException: Invalid thread access

    at org.eclipse.swt.SWT.error(SWT.java:4397)
    at org.eclipse.swt.SWT.error(SWT.java:4312)
    at org.eclipse.swt.SWT.error(SWT.java:4283)
    at org.eclipse.swt.widgets.Display.error(Display.java:1258)
    at org.eclipse.swt.widgets.Display.checkDevice(Display.java:764)
    at org.eclipse.swt.widgets.Display.addListener(Display.java:626)
    at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.<init>(IDEWorkbenchAdvisor.java:176)
    at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.<init>(IDEWorkbenchAdvisor.java:184)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:125)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1450)

    这个异常的大概意思就是在非SWT线程中是不允许操作UI组件的,否则就会抛出这个异常。

    好吧,一看堆栈信息并不像是某个插件导致的,莫非是 eclipse 4.3 的bug?先不深究了。

    说说这个问题是怎么解决的吧。

    折腾了很久,博主差点就重装系统了,后来发现解决办法很简单,只需要在Eclipse第一次启动的时候加上一个 -clean 参数即可,下次再启动就不用加这个参数了。

    再简单解释一下这个参数的作用,Eclipse为了加快启动速度会将插件进行缓存,但是恰巧就是这些缓存有的时候会出问题,所以用 -clean 参数让 Eclipse 清除掉这些缓存就行了,不过加上这个参数之后 Eclipse 的启动速度会变慢,好在只需使用一次。

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-1 09:46 , Processed in 0.062114 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表