我们的产品使用最新的生产就绪型SWT,3.7.2。既然当时没有人知道下一个Java版本会被调用(他们怎么会知道8之后是8,那就像是高等数学),我们被迫从3.7中交换org.eclipse.osgi
.2到3.10.0,这样我们现在就可以支持Java 8.虽然这可能不是最好的想法,但理论上它应该工作。
当然,作为Eclipse Luna的主要搞砸,有一个"错误"当我们开始申请时(大约50%的时间,我猜):
org.osgi.framework.BundleException: Unable to acquire the state change lock for the module: osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.0.v20140606-1445"; singleton:="true" [id=0] STARTED [STARTED] invalid
at org.eclipse.osgi.container.Module.lockStateChange(Module.java:329)
at org.eclipse.osgi.container.SystemModule.init(SystemModule.java:44)
at org.eclipse.osgi.container.SystemModule.start(SystemModule.java:170)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:393)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:412)
at org.eclipse.equinox.internal.simpleconfigurator.ConfigApplier.startBundles(ConfigApplier.java:307)
at org.eclipse.equinox.internal.simpleconfigurator.ConfigApplier.install(ConfigApplier.java:108)
at org.eclipse.equinox.internal.simpleconfigurator.SimpleConfiguratorImpl.applyConfiguration(SimpleConfiguratorImpl.java:129)
at org.eclipse.equinox.internal.simpleconfigurator.SimpleConfiguratorImpl.applyConfiguration(SimpleConfiguratorImpl.java:143)
at org.eclipse.equinox.internal.simpleconfigurator.Activator.start(Activator.java:48)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:771)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:764)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:936)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:319)
at org.eclipse.osgi.container.Module.doStart(Module.java:571)
at org.eclipse.osgi.container.Module.start(Module.java:439)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1562)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533)
at org.eclipse.osgi.container.SystemModule.startWorker(SystemModule.java:242)
at org.eclipse.osgi.container.Module.doStart(Module.java:571)
at org.eclipse.osgi.container.Module.start(Module.java:439)
at org.eclipse.osgi.container.SystemModule.start(SystemModule.java:172)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:393)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:412)
at org.eclipse.osgi.launch.Equinox.start(Equinox.java:115)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:320)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
网上没有太多关于问题的信息,大多数建议只删除工作区,但对于大多数情况,它只发生在启动Eclipse时,而不是最终的应用程序 - 尽管如此,我删除了工作区和运行时文件夹。什么都没有帮助。 "错误"也被抛出了导出的产品,但据我所知,一切仍然按预期工作。
有没有办法解决它?如果没有,是否有办法隐藏那个愚蠢的异常(暂时禁用日志记录,清除日志,不管怎样,我不挑剔)?
答案 0 :(得分:13)
我按照这些简单的步骤解决了问题,
答案 1 :(得分:7)
这看起来像框架启动启动simpleconfigurator,它试图再次启动框架。框架检测到这种递归并抛出异常以逃避它。问题似乎在simpleconfigurator中尝试启动正在启动它的框架。
答案 2 :(得分:7)
我遇到了同样的问题。从配置文件夹中删除给定的.log文件并重新启动eclipse可以解决您的问题。
答案 3 :(得分:4)
我使用Red Hat Developer Studio 10.4(Eclipse 4.6),我尝试使用Eclipse Checkstyle插件。
安装完成后,我重新启动了IDE并收到了崩溃通知。
我尝试了所有建议,但只有当我删除名为framework.info.34
的文件时,我的问题才得以解决。
此文件位于%eclipse_home%/configuration/org.eclipse.osgi
文件夹中。
答案 4 :(得分:1)
通过更新站点升级eclipse neon并安装一些新插件后发出弹出窗口。
步骤01: 我从$ {eclipse_home} /configuration/org.eclipse.osgi/.manager目录中删除了.fileTable。* lock文件。
步骤02: 通过在eclipse清理模式下启动删除了osgi缓存和其他插件缓存
eclipse -clean
答案 5 :(得分:1)
我有同样的问题,
我从各个地方删除了文件 1)" eclipse \ configuration \ org.eclipse.osgi.manager" .fileTableLock .fileTable3 .fileTable4
2)eclipse \ configuration * .LOG
之后我打开了日食,它可以解决任何PC的重启问题。
答案 6 :(得分:1)
对于有这个问题的人,直到在运行时从eclipse运行eclipse: 清洁文件夹: [yourEclipseSourceWorkspace] /。元数据/ .plugins / org.eclipse.pde.core / [yourRunConfiguration] /org.eclipse.osgi/.manager [yourEclipseSourceWorkspace] / .metadata / .plugins / org.eclipse.pde.core / [yourRunConfiguration] /org.eclipse.osgi删除所有文件(不是文件夹) 然后添加到您的配置-clean as programm arg
答案 7 :(得分:0)
遇到同样的问题。从“eclipse\configuration\org.eclipse.osgi.manager”中删除 .fileTableLock 并重新启动 eclipse 。它有效。
答案 8 :(得分:-1)