Eclipse重构(重命名)抛出NullpoinerException引起的ExecutionException
Eclipse Refactoring (Renaming) throws ExecutionException caused by NullpoinerException
昨天编码时,我无意中发现我的 Eclipse IDE 中突然出现错误。我想重命名一个变量并按下(我应该和我习惯的)ALT + SHIFT + R。然而,这在工具栏中打开了 运行。我想好吧,也许我按错了键,但这个错误一直在发生。
然后我尝试重启Eclipse,重新加载项目(删除了它但没有删除磁盘上的内容并通过导入重新加载)并且删除了工作区但仍然出现错误。
然后我想也许安装有问题,所以我重新安装了 Eclipse(顺便说一句。我使用的是最新的 06-2020 版本)。不过这也无济于事...
经过大量使用Google我还发现以下文章这个问题似乎与
相似
- Can't refactor rename in Eclipse
- Eclipse refactoring fails -> Keeps throwing exceptions!
- https://www.eclipse.org/forums/index.php/t/375178/
但是里面的建议对我没用。
我在浏览Error-log时看到的是在使用重命名功能时出现了很多错误。我希望有人建议如何解决这个问题,因为用鼠标重命名也不再有效。
更多细节:
- 突然发生错误 > 它一直在工作,然后在(至少我)不知道任何变化的情况下突然停止工作
- 我使用 Windows 10 和 OpenJ9 JDK14 作为默认 JDK JRE 所以 eclipse 也使用这个 JRE
错误:
!ENTRY org.eclipse.e4.ui.workbench 4 0 2020-08-22 09:57:49.697
!MESSAGE Execution exception for: ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring ,
Rename the selected element,
Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true),
org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@bcbec4c7,
,,true),null) in
context chain: WorkbenchContext -> TrimmedWindowImpl (IDEWindow) Context -> PerspectiveImpl (org.eclipse.jdt.ui.JavaPerspective) Context -> PartImpl (org.eclipse.e4.ui.compatibility.editor) removeOnHide org.eclipse.jdt.ui.CompilationUnitEditorContext
!STACK 0
org.eclipse.core.commands.ExecutionException: While executing the action, an exception occurred
at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:126)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97)
at jdk.internal.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:319)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:253)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:487)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:584)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:653)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:443)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access(KeyBindingDispatcher.java:386)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1248)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1036)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1046)
at org.eclipse.swt.widgets.Control.traverse(Control.java:4257)
at org.eclipse.swt.widgets.Control.translateMnemonic(Control.java:4107)
at org.eclipse.swt.widgets.Composite.translateMnemonic(Composite.java:1240)
at org.eclipse.swt.widgets.Composite.translateMnemonic(Composite.java:1243)
at org.eclipse.swt.widgets.Control.translateMnemonic(Control.java:4125)
at org.eclipse.swt.widgets.Display.translateMnemonic(Display.java:4824)
at org.eclipse.swt.widgets.Display.filterMessage(Display.java:1266)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3626)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1158)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1047)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda(Workbench.java:658)
at org.eclipse.ui.internal.Workbench$$Lambda1/0000000000000000.run(Unknown Source)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
at org.eclipse.equinox.launcher.Main.run(Main.java:1447)
Caused by: java.lang.NullPointerException
at org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder.getAssociatedRecordComponentNode(LinkedNodeFinder.java:68)
at org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder$BindingFinder.visit(LinkedNodeFinder.java:334)
at org.eclipse.jdt.core.dom.SimpleName.accept0(SimpleName.java:198)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:3019)
at org.eclipse.jdt.core.dom.QualifiedName.accept0(QualifiedName.java:163)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:3019)
at org.eclipse.jdt.core.dom.InfixExpression.accept0(InfixExpression.java:356)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:3019)
at org.eclipse.jdt.core.dom.IfStatement.accept0(IfStatement.java:181)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3042)
at org.eclipse.jdt.core.dom.Block.accept0(Block.java:128)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:3019)
at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:698)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3042)
at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:447)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3042)
at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:258)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder.findByBinding(LinkedNodeFinder.java:145)
at org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder.findByNode(LinkedNodeFinder.java:165)
at org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode.start(RenameLinkedMode.java:234)
at org.eclipse.jdt.internal.ui.refactoring.actions.RenameJavaElementAction.run(RenameJavaElementAction.java:240)
at org.eclipse.jdt.internal.ui.refactoring.actions.RenameJavaElementAction.doRun(RenameJavaElementAction.java:174)
at org.eclipse.jdt.internal.ui.refactoring.actions.RenameJavaElementAction.run(RenameJavaElementAction.java:153)
at org.eclipse.jdt.ui.actions.RenameAction.run(RenameAction.java:121)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:278)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:252)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:121)
... 53 more
这看起来像是 Eclipse 错误 564329,它在 Eclipse 核心 4.17 M1(里程碑 1)中被标记为已修复。因此,此修复将出现在计划于 2020 年 9 月发布的 2020-09 版本中。
临时修复:Window > 首选项 > Java 编译器 > 关闭“为 Java 14 启用预览功能”。启用“使用默认合规性设置”。
Enable preview features setting
昨天编码时,我无意中发现我的 Eclipse IDE 中突然出现错误。我想重命名一个变量并按下(我应该和我习惯的)ALT + SHIFT + R。然而,这在工具栏中打开了 运行。我想好吧,也许我按错了键,但这个错误一直在发生。
然后我尝试重启Eclipse,重新加载项目(删除了它但没有删除磁盘上的内容并通过导入重新加载)并且删除了工作区但仍然出现错误。
然后我想也许安装有问题,所以我重新安装了 Eclipse(顺便说一句。我使用的是最新的 06-2020 版本)。不过这也无济于事...
经过大量使用Google我还发现以下文章这个问题似乎与
相似- Can't refactor rename in Eclipse
- Eclipse refactoring fails -> Keeps throwing exceptions!
- https://www.eclipse.org/forums/index.php/t/375178/
但是里面的建议对我没用。
我在浏览Error-log时看到的是在使用重命名功能时出现了很多错误。我希望有人建议如何解决这个问题,因为用鼠标重命名也不再有效。
更多细节:
- 突然发生错误 > 它一直在工作,然后在(至少我)不知道任何变化的情况下突然停止工作
- 我使用 Windows 10 和 OpenJ9 JDK14 作为默认 JDK JRE 所以 eclipse 也使用这个 JRE
错误:
!ENTRY org.eclipse.e4.ui.workbench 4 0 2020-08-22 09:57:49.697
!MESSAGE Execution exception for: ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring ,
Rename the selected element,
Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true),
org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@bcbec4c7,
,,true),null) in
context chain: WorkbenchContext -> TrimmedWindowImpl (IDEWindow) Context -> PerspectiveImpl (org.eclipse.jdt.ui.JavaPerspective) Context -> PartImpl (org.eclipse.e4.ui.compatibility.editor) removeOnHide org.eclipse.jdt.ui.CompilationUnitEditorContext
!STACK 0
org.eclipse.core.commands.ExecutionException: While executing the action, an exception occurred
at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:126)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97)
at jdk.internal.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:319)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:253)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:487)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:584)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:653)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:443)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access(KeyBindingDispatcher.java:386)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1248)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1036)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1046)
at org.eclipse.swt.widgets.Control.traverse(Control.java:4257)
at org.eclipse.swt.widgets.Control.translateMnemonic(Control.java:4107)
at org.eclipse.swt.widgets.Composite.translateMnemonic(Composite.java:1240)
at org.eclipse.swt.widgets.Composite.translateMnemonic(Composite.java:1243)
at org.eclipse.swt.widgets.Control.translateMnemonic(Control.java:4125)
at org.eclipse.swt.widgets.Display.translateMnemonic(Display.java:4824)
at org.eclipse.swt.widgets.Display.filterMessage(Display.java:1266)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3626)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1158)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1047)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda(Workbench.java:658)
at org.eclipse.ui.internal.Workbench$$Lambda1/0000000000000000.run(Unknown Source)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
at org.eclipse.equinox.launcher.Main.run(Main.java:1447)
Caused by: java.lang.NullPointerException
at org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder.getAssociatedRecordComponentNode(LinkedNodeFinder.java:68)
at org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder$BindingFinder.visit(LinkedNodeFinder.java:334)
at org.eclipse.jdt.core.dom.SimpleName.accept0(SimpleName.java:198)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:3019)
at org.eclipse.jdt.core.dom.QualifiedName.accept0(QualifiedName.java:163)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:3019)
at org.eclipse.jdt.core.dom.InfixExpression.accept0(InfixExpression.java:356)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:3019)
at org.eclipse.jdt.core.dom.IfStatement.accept0(IfStatement.java:181)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3042)
at org.eclipse.jdt.core.dom.Block.accept0(Block.java:128)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:3019)
at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:698)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3042)
at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:447)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3042)
at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:258)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2971)
at org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder.findByBinding(LinkedNodeFinder.java:145)
at org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder.findByNode(LinkedNodeFinder.java:165)
at org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode.start(RenameLinkedMode.java:234)
at org.eclipse.jdt.internal.ui.refactoring.actions.RenameJavaElementAction.run(RenameJavaElementAction.java:240)
at org.eclipse.jdt.internal.ui.refactoring.actions.RenameJavaElementAction.doRun(RenameJavaElementAction.java:174)
at org.eclipse.jdt.internal.ui.refactoring.actions.RenameJavaElementAction.run(RenameJavaElementAction.java:153)
at org.eclipse.jdt.ui.actions.RenameAction.run(RenameAction.java:121)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:278)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:252)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:121)
... 53 more
这看起来像是 Eclipse 错误 564329,它在 Eclipse 核心 4.17 M1(里程碑 1)中被标记为已修复。因此,此修复将出现在计划于 2020 年 9 月发布的 2020-09 版本中。
临时修复:Window > 首选项 > Java 编译器 > 关闭“为 Java 14 启用预览功能”。启用“使用默认合规性设置”。
Enable preview features setting