Eclipse编辑器无法打开。

37

我的Eclipse无法显示编辑器窗口。

错误:

无法打开编辑器:编辑器类无法实例化。这通常表示缺少无参数构造函数或在plugin.xml中拼写了错误的编辑器类名称。

注:

  • 我用不同的 Eclipse(而不是插件)来编写 C++ 和 Python,它们运行得非常顺畅,只有 Java Eclipse 引起了麻烦。
  • 我已经尝试重新安装 Eclipse,甚至重新安装 Java。您有什么想法吗?
  • 它没有问题显示项目文件,只是无法打开 *.java 和 *.class 文件。

堆栈跟踪

org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter$TerminatingClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.jdt.ui (150).
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:121)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:338)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:232)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1197)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:904)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
    at org.eclipse.ui.internal.WorkbenchPlugin$1.run(WorkbenchPlugin.java:267)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:263)
    at org.eclipse.ui.internal.registry.EditorDescriptor.createEditor(EditorDescriptor.java:235)
    at org.eclipse.ui.internal.EditorManager.createPart(EditorManager.java:845)
    at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:609)
    at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465)
    at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
    at org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(EditorAreaHelper.java:271)
    at org.eclipse.ui.internal.EditorManager.setVisibleEditor(EditorManager.java:1429)
    at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:942)
    at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
    at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
    at org.eclipse.ui.internal.Workbench$31.runWithException(Workbench.java:1567)
    at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2548)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    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:620)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
Caused by: org.osgi.framework.BundleException: The activator org.eclipse.jdt.internal.ui.JavaPlugin for bundle org.eclipse.jdt.ui is invalid
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:156)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:751)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417)
    at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265)
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106)
    ... 57 more
Caused by: java.lang.NoClassDefFoundError: org/eclipse/jdt/core/IBufferFactory
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:151)
    ... 63 more
Caused by: org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter$TerminatingClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.jdt.core (140).
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:121)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
    at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:466)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 69 more
Caused by: org.osgi.framework.BundleException: Exception in org.eclipse.jdt.core.JavaCore.start() of bundle org.eclipse.jdt.core.
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:806)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417)
    at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265)
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106)
    ... 78 more
Caused by: java.lang.NullPointerException
    at org.eclipse.core.runtime.Path.<init>(Path.java:183)
    at org.eclipse.core.internal.resources.WorkspaceRoot.getProject(WorkspaceRoot.java:181)
    at org.eclipse.jdt.internal.core.ExternalFoldersManager.isExternalFolderPath(ExternalFoldersManager.java:90)
    at org.eclipse.jdt.internal.core.JavaProject.addToResult(JavaProject.java:2738)
    at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2688)
    at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2783)
    at org.eclipse.jdt.internal.core.DeltaProcessingState.getRootInfos(DeltaProcessingState.java:301)
    at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRootsWithPreviousSession(DeltaProcessingState.java:271)
    at org.eclipse.jdt.internal.core.JavaModelManager.startup(JavaModelManager.java:4712)
    at org.eclipse.jdt.core.JavaCore.start(JavaCore.java:5048)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)
    ... 84 more

编辑:

eclipse版本:3.6.2
eclipse.ini文件:

-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.2.R36x_v20101222
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m

编辑 2:
我改变了工作区并解决了问题(至少对于新的工作区),但仍然不知道为什么会发生这种情况。(但我仍然很好奇,所以我保留这个问题。)


1
在 https://bugs.eclipse.org/bugs/ 中搜索此错误,并在尚不存在的情况下报告它。 - Gedrox
使用Eclipse修改Eclipse源文件,它会起作用...哦,该死,这是一个递归问题;-)抱歉,我不知道答案,这只是太诱人了。 - SteeveDroz
你使用的是哪个Eclipse版本?另外,你能否请提供你的eclipse.ini文件? - Simeon
14个回答

35

这通常是由Eclipse插件保存的临时文件引起的问题。 请检查 YOUR_WORKSPACE/.metadata/.plugins/org.eclipse.jdt.core/ 目录中的索引文件。有很多index文件,删除它们有时会有帮助。 并且,请使用 -clean参数启动Eclipse。

但我认为您的问题略有不同。 您的文件系统中是否有对库(jar文件)的引用?如果您已删除或移动了它,则Eclipse将无法构建您的项目。

您是否刷新了所有项目?


对我来说,第一个选项(从插件中删除内容)有所帮助。谢谢! - Elven
谢谢,谢谢,谢谢!这是整个互联网上唯一有用的建议 - 其他所有建议都是基于完全不切实际的核选项“重建整个工作区”的变体。 - Kilian Foth
应该将以“-clean”开头作为默认设置。 - hiergiltdiestfu
使用“-clean”参数启动Eclipse解决了我的问题。这是Luna版本。 - PM 77-1
我不得不创建新的工作空间并从存储库下载所有RCP应用程序的捆绑包来解决此问题。这只是RCP应用程序的问题,Eclipse没有问题。其他一切都没有帮助。 - A Kunin
我在桌面上编辑了eclipse.exe图标,并在目标中添加了"C:/path/to/eclipse/exe/eclipse.exe"-clean,对于我来说它很好用。这是针对eclipse-neon4的。 - SUDARSHAN BHALERAO

12
我有同样的问题,尽管我的eclipse版本更新得多-4.2(Juno)。对我来说,解决方法是删除<workspace>/.metadata/.plugins/org.eclipse.core.resources/.snap。之后我在eclipse.org上发现了这个bug: Bug 178988 - Crash at startup due to ".snap" files
希望这能帮助某些人。

+1,因为这对我有用,使用的是Dart编辑器,版本1.5.1.release(STABLE)。 - GeezerGeek
点赞是因为值得一试,但对我来说并没有起作用。 - Nikana Reklawyks
它对我起作用了。谢谢。 - Rads

3
at org.eclipse.core.runtime.Path.<init>(Path.java:183)
at org.eclipse.core.internal.resources.WorkspaceRoot.getProject(WorkspaceRoot.java:181)
at org.eclipse.jdt.internal.core.ExternalFoldersManager.isExternalFolderPath(ExternalFoldersManager.java:90)
at org.eclipse.jdt.internal.core.JavaProject.addToResult(JavaProject.java:2738)
at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2688)

堆栈跟踪表明您的类路径存在问题。

  1. 可能您的JRE指向无效位置/未定义?(Window-> Preferences-> Java-> Installed JREs)。
  2. 可能您的项目包含无效的类路径条目?尝试创建一个新的Java项目并检查是否按预期工作。如果它可以正常工作,请检查不起作用的项目的类路径。

编辑:另一个想法...在其他工作区上启动Eclipse。然后为“Eclipse配置”创建一个启动配置,其中包含产生错误的工作区。设置NullPointerException的Java异常断点。以调试模式启动,您可以检查变量以查看哪个路径会产生问题。


我马上会去检查选项1,但我怀疑它是否有效(见edit2)。对于选项2:在这个工作空间中所有项目都出现了这个问题。(更改工作空间解决了这个问题,但我不知道为什么。) - amit

3
Google这个错误,你可以在各种(Eclipse)IDE和插件中找到很多相关的信息。除了你发现的创建新工作区的方法外,似乎没有真正的“解决”记录。
我正在运行的版本是3.6.2.r362_v20110210。你确定你在使用3.6.2吗?你的第一个编辑列表似乎指向一个较旧的版本。
这似乎指向一个更旧的版本。我同意另一个帖子的观点,你应该在Eclipse的Bug跟踪系统中搜索和/或发布此问题。当你使用开源软件时,这是你至少该做的事情。

3.6.2 的详细信息来自 readme 文件,所以我想假设它是有效的。 - amit
我的错误。显然这也是我的eclipse.ini中的设置。 - Wivani
这是Eclipse中涵盖相同错误的一个缺陷报告,并且似乎指向某些缓存损坏。 这里还提到您拥有多个Eclipse实例的事实。 我发现非常奇怪的是,一个据说已经在3.4和3.5版本线中添加的修复程序现在在3.6中再次出现,但当然这并非完全不可能。 - Wivani

1

我尝试了几个选项

  1. 删除.plugins文件夹中的缓存文件
  2. 删除<workspace>/.metadata/.plugins/org.eclipse.jdt.core中的所有索引文件
  3. 删除<workspace>/.metadata/.plugins/org.eclipse.core.resources/.snap中的快照文件
  4. -clean作为启动参数
  5. -initialize作为启动参数

但是我仍然随机收到错误消息。

到目前为止,唯一有效的选项是删除.snap文件。在删除.snap文件后首次启动eclipse时,它可以正常工作。

此外,每当我们在新的工作区中启动它时,它也可以正常工作。但是我们不想因为这个原因切换工作区。

此外,如果我们关闭并重新启动eclipse,则问题会随机出现。


我在Jasper Studio 6.3.1遇到了这个问题。删除.snap文件是我的解决方案。然后,不幸的是,我的Project Explorer中的项目消失了,但这不是一个大问题。谢谢兄弟! - ÖMER TAŞCI

0

按照其他人建议删除索引文件在我的情况下没有帮助。我不得不重置透视图:右键单击右上角的“Java”透视图切换按钮,选择“重置”。至少这比重新创建整个工作区要好。


0

这里很简单。在类中右键单击,选择“打开方式”/“Java编辑器”或“通用文本编辑器”选项。

这里很简单。右键单击类并选择“打开方式”/“Java编辑器”或“通用文本编辑器”选项。


0
当我遇到这个问题时,我简单地更新了Eclipse并解决了问题。

0

我在Indigo 3.7上遇到了同样的问题,使用正确版本的jadclipse jar(net.sf.jadclipse_3.3.0.jar和Jad 1.5.8g)解决了我的问题。


0
以上问题的解决方案是前往workspace.metadata.plugins\org.eclipse.jdt.core并删除所有索引文件。
感谢FlorianOver。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接