如题,Eclipse崩了,只能按它留下的线索去看了1552616709202.log:
!SESSION 2019-03-15 10:25:08.739 ----------------------------------------------- eclipse.buildId=4.6.2.M20161124-1400 java.version=1.8.0_181 java.vendor=Oracle Corporation BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=zh_CN 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 !ENTRY org.eclipse.equinox.ds 2 0 2019-03-15 10:25:40.333 !MESSAGE [SCR - WorkThread] Timeout occurred! Thread was blocked on processing [QueuedJob] WorkPerformer: org.eclipse.equinox.internal.ds.SCRManager@701a36b3; actionType 1 !ENTRY org.eclipse.equinox.ds 2 0 2019-03-15 10:25:40.340 !MESSAGE [SCR] Enabling components of bundle org.eclipse.ui.trace did not complete in 30000 ms !ENTRY org.eclipse.core.runtime 4 0 2019-03-15 10:25:45.367 !MESSAGE FrameworkEvent ERROR !STACK 0 org.osgi.framework.BundleException: Unable to acquire the state change lock for the module: osgi.identity; type="osgi.bundle"; version:Version="3.12.0.v20160606-1342"; osgi.identity="org.eclipse.core.runtime"; singleton:="true" [id=112] STARTED [STARTED] at org.eclipse.osgi.container.Module.lockStateChange(Module.java:337) at org.eclipse.osgi.container.Module.start(Module.java:401) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1620) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1600) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1571) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1514) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) Caused by: java.util.concurrent.TimeoutException: Timeout after waiting 5 seconds to acquire the lock. at org.eclipse.osgi.container.Module.lockStateChange(Module.java:334) ... 8 more Root exception: java.util.concurrent.TimeoutException: Timeout after waiting 5 seconds to acquire the lock. at org.eclipse.osgi.container.Module.lockStateChange(Module.java:334) at org.eclipse.osgi.container.Module.start(Module.java:401) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1620) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1600) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1571) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1514) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
从日志看是拿锁超时了,关键是锁在哪?锁在工作空间的.metadata目录里:
把这个日志(eclipseconfiguration1552616709202.log)和锁(workspace.metadata.lock)删了再试试就ok了,Eclipse正常启动。
碰到这种启动失败的场景,基本就是清理这两个目录(configuration和.metadata)这条路子。