如果工作区中存在工作灯项目,则 com.worklight.studio.plugin 线程在 Eclipse 启动时挂起

Posted

技术标签:

【中文标题】如果工作区中存在工作灯项目,则 com.worklight.studio.plugin 线程在 Eclipse 启动时挂起【英文标题】:com.worklight.studio.plugin thread hangs on eclipse startup if existing worklight projects in workspace 【发布时间】:2013-04-19 15:11:31 【问题描述】:

我安装了 eclipse Juno 和 IBM Worklight studio 插件 v5.0.5。支持 Eclipse Juno 的工作灯文档,但是如果我创建一个工作灯项目然后关闭 Eclipse,然后尝试再次启动它,一个线程会在启动时挂起,从 com.worklight.studio.plugin 加载内容,我最终得到了杀死 Eclipse,因为它只是挂在加载屏幕上。每次挂起时加载的包都不相同,它似乎是随机的。这是一次发生时的堆栈跟踪:

!MESSAGE While loading class "com.worklight.studio.plugin.classpaths.ServerAPIContainer", thread "Thread[org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor,1,main]" timed out waiting (5000ms) for thread "Thread[Worker-0,5,main]" to finish starting bundle "com.worklight.studio.plugin_5.0.5.20121129-1027 [882]". To avoid deadlock, thread "Thread[org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor,1,main]" is proceeding but "com.worklight.studio.plugin.classpaths.ServerAPIContainer" may not be fully initialized.
!STACK 0
org.osgi.framework.BundleException: State change in progress for bundle "reference:file:plugins/com.worklight.studio.plugin_5.0.5.20121129-1027/" by thread "Worker-0".
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.beginStateChange(AbstractBundle.java:1088)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:298)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
    at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:263)
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:469)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:395)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:464)
...
Caused by: org.eclipse.osgi.framework.internal.core.AbstractBundle$BundleStatusException
    ... 45 more
Root exception:
org.eclipse.osgi.framework.internal.core.AbstractBundle$BundleStatusException
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.beginStateChange(AbstractBundle.java:1088)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:298)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
    at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:263)
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:469)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:395)
...
eclipse.buildId=M20130204-1200
java.version=1.7.0_15
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product

这是一个很长的堆栈跟踪,所以我只包含了我认为与上面相关的部分。我可以通过从我的工作区中删除工作灯项目来再次启动 Eclipse,但这意味着我只能在一个项目上工作一个会话。我看过关于这个问题的其他帖子,但他们都给出了相同的解决方案,只是删除项目。这个问题有没有更永久的解决方案?

谢谢, 亚历克斯

【问题讨论】:

请使用您在 Eclipse 中安装的插件列表编辑您的问题。 也就是你安装的插件... 我安装了 IBM Worklight studio 插件 v5.0.5。这是我安装的唯一插件。我安装了 Eclipse Juno,安装了 worklight 插件,然后开始使用它。我还没有安装其他任何东西。 卸载它并尝试最新版本 5.0.6.1,但还要确保从 Eclipse 工作区中删除 WorklightServerHome 文件夹(由于 5.0.5 和 5.0.6.x 之间的架构更改) . 您安装了 5.0.6.1 吗?有更新吗? 【参考方案1】:

卸载它并尝试最新版本 5.0.6.1,但还要确保从 Eclipse 工作区中删除 WorklightServerHome 文件夹(由于 5.0.5 和 5.0.6.x 之间的架构更改)。

【讨论】:

以上是关于如果工作区中存在工作灯项目,则 com.worklight.studio.plugin 线程在 Eclipse 启动时挂起的主要内容,如果未能解决你的问题,请参考以下文章

Google Script:如果行中的值存在于另一个工作表中,则删除行

UIAction 工作表未在 iPad 中单击条形按钮项目时关闭

检查值是不是存在的数组列表,如果存在则将 1 添加到字符串

如果每个工作表中的字符串匹配,则修复删除行

如果存在,则替换文件中以字符串开头的行,如果不存在则添加

SQL - 如果 OLEQuery 中存在,则选择列