我单击eclipse.exe,出现一个框,显示“发生了错误:请参阅日志文件C:\ Users \ sam \ workspace \ .metadata \ .log”。我搜索了此错误消息,发现很多人遇到相同的问题(包括this,this和this,还有很多其他问题),但是任何答案中的解决方案都没有对我来说,甚至没有更改错误消息。然后,我在日志文件中搜索了特定错误:
!ENTRY org.eclipse.e4.ui.workbench 4 0 2019-06-27 12:56:35.009
!MESSAGE FrameworkEvent ERROR
!STACK 0
java.lang.NoClassDefFoundError: javax/annotation/PreDestroy
at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:426)
at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:154)
at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:78)
at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:111)
at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:74)
at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:176)
at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:106)
at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:139)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112)
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156)
at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
at org.eclipse.osgi.container.Module.doStop(Module.java:634)
at org.eclipse.osgi.container.Module.stop(Module.java:498)
at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:202)
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:165)
at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy cannot be found by org.eclipse.e4.core.di_1.6.1.v20160712-0927
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:410)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 21 more
发现了其他无效的东西。
以下是我尝试过的一些事情:
eclipse.exe -clean
,eclipse.exe -clean --launcher.ini (path to eclipse.ini)
和eclipse.exe -clean --clearPersistedState
运行Eclipse-结果没有改变.clean
放在顶部,将-vmargs
替换为-vm
以及javaw.exe
的路径。没有任何作用,甚至没有改变我有Windows 10 64位,Eclipse Neon 3 64位,java在我的PATH中,这就是我输入java -version
时出现的情况:
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
我很犹豫地在SO上问这个问题,但我认为自从上次提出该问题以来,时间可能有所变化。这些解决方案都不适合我,目前我没有其他选择。
答案 0 :(得分:1)
正如greg-449在评论中提到的那样,您不能将Java 10与Neon一起使用。
eclipse Wiki上有一个compatibility chart,用于指定给定版本的eclipse所需的Java版本。
您会注意到,在Eclipse 4.6(Neon)条目中,它指定了“需要Java 8 JRE / JDK ...” ,而不是版本{{ 3}}和更高版本,需要“ Java 8或更高版本的JRE / JDK ...”
这在4.7部分中得到了进一步的澄清,其中警告是
如果使用Java 9或更高版本,请使用Eclipse 4.7.1a或更高版本,因为它包含Eclipse启动器中的修复程序以添加所有JVM模块。