Java Can';Eclipse中的t重构重命名

Java Can';Eclipse中的t重构重命名,java,eclipse,refactoring,rename,Java,Eclipse,Refactoring,Rename,如果我对某个东西进行重构重命名,它会尝试进行一段时间,但随后会将其恢复到以前的名称。没有显示任何错误或任何错误迹象 我刚刚重新启动了Eclipse,现在情况更糟了。在此之前,至少选择Refactor>Rename会将名称“框起”,并假装它允许您进行重构。现在,在重新启动之后,选择重构>重命名什么也不做 Win7 64位 Eclipse Indigo build 20110615-0604尝试从Eclipse中删除项目(不要删除磁盘上的项目内容),然后重新加载它。当我尝试重命名变量和方法名称时,

如果我对某个东西进行重构重命名,它会尝试进行一段时间,但随后会将其恢复到以前的名称。没有显示任何错误或任何错误迹象


我刚刚重新启动了Eclipse,现在情况更糟了。在此之前,至少选择Refactor>Rename会将名称“框起”,并假装它允许您进行重构。现在,在重新启动之后,选择重构>重命名什么也不做

Win7 64位

Eclipse Indigo build 20110615-0604

尝试从Eclipse中删除项目(不要删除磁盘上的项目内容),然后重新加载它。

当我尝试重命名变量和方法名称时,我看到了与OP完全相同的问题。重新启动Eclipse后,重构->重命名功能正常工作。

我在Eclipse Helios上遇到了这个问题。我查看了工作区的.metadata目录并打开了.log文件。它有一个相当长的与错误相关的参考链,但相关部分是:

java.lang.NoClassDefFoundError:org/eclipse/jdt/core/IMethod

java.lang.reflect.InvocationTargetException位于 org.eclipse.jface.operation.ModalContext.run(ModalContext.java:421) 在 org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:759) 在 org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) 在 org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:756) 在 org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2606) 在 org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:191) 在 org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:151) 在 org.eclipse.jdt.ui.refactoring.RenameSupport.perform(RenameSupport.java:197) 在 org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode.doRename(RenameLinkedMode.java:361) 在 org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode$EditorSynchronizer.left(RenameLinkedMode.java:119) 在 org.eclipse.jface.text.link.LinkedModel.exit(LinkedModel.java:341) 在 org.eclipse.jface.text.link.LinkedModeUI$4.run(LinkedModeUI.java:1194) 位于org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) 在 org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041) 在org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)上


我转到了帮助安装新软件已经安装的软件,然后选择与org.eclipse.swt相关的所有内容并单击卸载。重新启动Eclipse后,问题消失了,我能够再次正常重构/重命名。

如果项目中有任何错误,重构将无法工作

修复错误,或者只是注释掉被检测为错误的部分,以便运行重构


这对我来说很有效。

如果某件不太明显的事情导致重构失败,您可以通过尝试预览重构而不是尝试执行重构来查找问题

正如迪基·摩尔(Dicky Moore)所提到的,您不能在项目中出现错误的情况下进行重构。。。但这些并不总是Eclipse标记的代码错误或构建路径问题。因此,有时它看起来好像没有任何错误,它仍然会失败。如上所述,“预览”将在错误对话框中显示这些问题,即使它们从未在其他地方显示

从那里,你可以配置你的项目来修复错误(一个常见的错误是重构试图解释一个它不应该解释的输出文件夹,可以通过排除
Build Path>Source
设置中的文件夹来修复),或者卸载有问题的插件。

使用4.4(Luna),在大型重构之后,我遇到了跨项目重构问题—删除了/.metadata/.plugins/org.eclipse.jdt.core
文件夹修复了我想在其他答案中添加一些信息的问题

指出您可以通过运行重命名操作的预览来获得更多信息。我花了一段时间才弄明白如何进行预览:再次键入重命名键以获得对话框。有时Preview没有给出错误信息(没有ppoup的快速重命名也没有),但在对话框中单击OK会显示更多信息

通过进入工作区中的文件在日志中找到信息,但是您也可以通过进入错误日志视图(从Cmd-3)在Eclipse中找到这些信息

当我遇到这个问题时,错误日志将我指向这个失败的断言:“搜索方法声明未找到原始元素”,这导致了一些未解决的错误。(我正在运行开普勒,但这个问题显然很难复制,而且我看不到它已经解决的证据。请参阅和。)

通过选择方法并使用Cmd-G(或Ctrl-G:Search>Declarations>Workspace),您可以看到是否遇到了这个特定的bug。Eclipse无法找到您试图重命名的方法,搜索结果为空

我的案例表明,错误可能与不同类中同名的方法有关。当一种方法出现问题时,它不会影响大多数其他方法

刷新、项目->清理和重新启动Eclipse对我没有帮助。
为我工作:“尝试从Eclipse中删除项目(不要删除磁盘上的项目内容),然后重新加载它。”

而直接在编辑器中重命名方法在非常罕见的情况下不起作用,然后IDE在按回车键后恢复原始方法名-类似于“不可知模式”:-,当我通过重构来做同样的事情时->更改Methode签名,在右上角我更改了方法名,即
java.lang.reflect.InvocationTargetException at 
org.eclipse.jface.operation.ModalContext.run(ModalContext.java:421) at 
org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:759) at
org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at 
org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:756) at
org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2606) at 
org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:191) at
org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:151) at
org.eclipse.jdt.ui.refactoring.RenameSupport.perform(RenameSupport.java:197) at
org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode.doRename(RenameLinkedMode.java:361) at
org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode$EditorSynchronizer.left(RenameLinkedMode.java:119) at 
org.eclipse.jface.text.link.LinkedModeModel.exit(LinkedModeModel.java:341) at 
org.eclipse.jface.text.link.LinkedModeUI$4.run(LinkedModeUI.java:1194) 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)