Multithreading &引用;无效的线程访问“;从Eclipse插件创建Cloudio wordcloud时出现异常

Multithreading &引用;无效的线程访问“;从Eclipse插件创建Cloudio wordcloud时出现异常,multithreading,exception,eclipse-plugin,eclipse-gef,Multithreading,Exception,Eclipse Plugin,Eclipse Gef,我正在尝试在Eclipse插件中创建wordclouds。我决定使用Cloudio,并从使用的一个小测试开始 当我将这个类作为Java应用程序(而不是插件)运行时,它就像一个魔咒 但是,当我从另一个插件中调用该方法时,我得到了以下错误:(我认为值得一提的是,我添加wordcloud类的包中的所有其他功能都工作正常,所以我想这很可能不是什么依赖性问题) org.eclipse.e4.core.di.InjectionException:org.eclipse.swt.swt异常:线程访问无效 位于

我正在尝试在Eclipse插件中创建wordclouds。我决定使用Cloudio,并从使用的一个小测试开始

当我将这个类作为Java应用程序(而不是插件)运行时,它就像一个魔咒

但是,当我从另一个插件中调用该方法时,我得到了以下错误:(我认为值得一提的是,我添加wordcloud类的包中的所有其他功能都工作正常,所以我想这很可能不是什么依赖性问题)

org.eclipse.e4.core.di.InjectionException:org.eclipse.swt.swt异常:线程访问无效
位于org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:68)
位于org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:252)
位于org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:234)
位于org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
位于org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:152)
位于org.eclipse.core.commands.Command.executeWithChecks(Command.java:493)
位于org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:486)
位于org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
位于org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:799)
位于org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:675)
位于org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:659)
位于org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:592)
位于org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
位于org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
位于org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
位于org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180)
在org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769)上
位于org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
位于org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
位于org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
位于org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
位于org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654)
位于org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
位于org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598)
位于org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
位于org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139)
在org.eclipse.equinox.internal.app.eclipseeapphandle.run上(eclipseeapphandle.java:196)
位于org.eclipse.core.runtime.internal.adapter.eclipseeappluncher.runApplication(eclipseeappluncher.java:134)
位于org.eclipse.core.runtime.internal.adapter.eclipseeappluncher.start(eclipseeappluncher.java:104)
位于org.eclipse.core.runtime.adapter.EclipseStarter.run(EclipseStarter.java:380)
位于org.eclipse.core.runtime.adapter.EclipseStarter.run(EclipseStarter.java:235)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
位于org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
位于org.eclipse.equinox.launcher.Main.run(Main.java:1515)
位于org.eclipse.equinox.launcher.Main.Main(Main.java:1488)
原因:org.eclipse.swt.swt异常:线程访问无效
位于org.eclipse.swt.swt.error(swt.java:4491)
位于org.eclipse.swt.swt.error(swt.java:4406)
位于org.eclipse.swt.swt.error(swt.java:4377)
位于org.eclipse.swt.widgets.Display.checkDisplay(Display.java:775)
位于org.eclipse.swt.widgets.Display.create(Display.java:837)
位于org.eclipse.swt.graphics.Device(Device.java:137)
位于org.eclipse.swt.widgets.Display(Display.java:489)
在org.eclipse.swt.widgets.Display上(Display.java:480)
位于de.uni_breme.aide.wordcloud.wordcloud.main(wordcloud.java:69)
位于de.uni_breme.aide.tfidf.tfidf.writewightstofile(tfidf.java:73)
位于de.uni_breme.aide.clone.SummariesGeneratorHandler.execute(SummariesGeneratorHandler.java:53)
位于org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:295)
位于org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
... 38多

也许有人已经遇到了这样的问题,可以告诉我问题出在哪里?

看起来像
de.uni_breme.aide.wordcloud.wordcloud.main
正在尝试创建一个新的
Display
对象。SWT不允许这样。嘿,格雷格,谢谢你,这正是问题所在。我用Display.getCurrent()替换了它,它就像一个符咒。
org.eclipse.e4.core.di.InjectionException: org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:68)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:252)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:234)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:152)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:493)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:486)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:799)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:675)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:659)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:592)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
at 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)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
at org.eclipse.equinox.launcher.Main.main(Main.java:1488)

Caused by: org.eclipse.swt.SWTException: Invalid thread access
        at org.eclipse.swt.SWT.error(SWT.java:4491)
        at org.eclipse.swt.SWT.error(SWT.java:4406)
        at org.eclipse.swt.SWT.error(SWT.java:4377)
        at org.eclipse.swt.widgets.Display.checkDisplay(Display.java:775)
        at org.eclipse.swt.widgets.Display.create(Display.java:837)
        at org.eclipse.swt.graphics.Device.<init>(Device.java:137)
        at org.eclipse.swt.widgets.Display.<init>(Display.java:489)
        at org.eclipse.swt.widgets.Display.<init>(Display.java:480)
        at de.uni_bremen.aide.wordcloud.WordCloud.main(WordCloud.java:69)
        at de.uni_bremen.aide.tfidf.TfIdf.writeWeightsToFile(TfIdf.java:73)
        at de.uni_bremen.aide.clones.SummariesGeneratorHandler.execute(SummariesGeneratorHandler.java:53)
        at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:295)
        at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
        at 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)
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
        ... 38 more