variable una nombre como cambiar atajos java eclipse refactoring rename

java - una - atajos eclipse



No se puede refactorizar renombrar en Eclipse (12)

Si hago un cambio de nombre de refactor en algo, intenta hacerlo por un momento, pero luego simplemente vuelve a su nombre anterior. No se muestran errores ni ninguna indicación de que algo está mal.

Acabo de reiniciar Eclipse y ahora es aún peor. Antes, al menos seleccionando Refactor> Renombrar "encajonaría" el nombre y fingiría que le está permitiendo hacer un refactor. Ahora, después de reiniciar, seleccionar Refactor> Renombrar no hace nada.

Win7 64 bit
Eclipse Indigo compilación 20110615-0604


Aunque el cambio de nombre de los métodos directamente en el editor no funciona en casos muy raros y luego el IDE restaura el nombre del método original después de presionar la tecla de retorno - tipo de "modo agnóstico" :-), cuando hago lo mismo a través de Refactoring -> Cambiar la Firma del Método , en la esquina superior derecha, cambio el nombre del método, luego recibo un mensaje de error completamente detallado: "Ocurrió una excepción inesperada al realizar la refactorización ... Motivo: anónimo # 1 en .... en lambda # 1 ... en ... Copia de trabajo ... no existe ".

Esto indica que el cambio de nombre de los métodos desencadena este error, cuando el método que se va a cambiar de nombre se utiliza en el contexto de una clase lambda o anónima .

Para verificar, comentar la ocurrencia en la clase lambda o anónima, la refactorización / cambio de nombre podría funcionar como se esperaba en mi caso.


Con 4.4 (Luna), tuve problemas de refactorización de proyectos cruzados después de grandes refactorizaciones; al eliminar la carpeta /.metadata/.plugins/org.eclipse.jdt.core, eso se solucionó para mí


El refactor no funcionará si hay algún error en su proyecto.

Corrija los errores, o simplemente comente la sección que se está detectando como un error para ejecutar el refactor.

Esto funcionó para mí.


Estaba viendo exactamente el mismo problema que el OP cuando intentaba cambiar el nombre de las variables y los nombres de los métodos. Después de reiniciar Eclipse, la funcionalidad Refactor-> Renombrar funcionó correctamente.


He estado luchando este problema también. Cuando miré la Vista de registro de errores de Eclipse, noté que cada vez que intentaba cambiar el nombre de una variable o método, obtenía este tipo de excepción:

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)

Noté que todo comienza desde las bibliotecas SWT. Intenté actualizar SWT, pero por alguna razón no pude encontrar SWT instalado. Así que simplemente instalé SWT Tools 3.106.0.v20170503-0851 a través de Ayuda -> Instalar un nuevo software, lo que resolvió el problema felizmente.


Intenta lo siguiente (solo funcionó para mí):

  1. Eliminar el proyecto
  2. Crea un nuevo proyecto java con el mismo nombre.

Intente eliminar el proyecto de Eclipse (no elimine el contenido del proyecto en el disco) y luego vuelva a cargarlo.


Quería agregar alguna información a algunas otras respuestas aquí.

La respuesta de Archenoth señala que puede obtener más información al ejecutar Vista previa en la operación de cambio de nombre. Me tomó un tiempo descubrir cómo obtener una vista previa: escriba la tecla Cambiar el nombre por segunda vez para obtener el cuadro de diálogo. A veces, Preview no proporcionó la información del error (y tampoco lo hizo el cambio de nombre rápido sin la ppoup), pero hacer clic en Aceptar en el cuadro de diálogo decía más.

MutantXenu encontró información en los registros MutantXenu a los archivos en el área de trabajo, pero también puede acceder a ellos dentro de Eclipse yendo a la vista Registro de errores (desde Cmd-3)

Cuando tuve este problema, el registro de errores me indicó esta afirmación fallida: "La búsqueda de la declaración del método no encontró el elemento original", lo que provocó algunos errores no resueltos. (Estoy ejecutando Kepler, pero el problema es aparentemente difícil de replicar y no veo evidencia de que esté resuelto. Vea here y here ).

Puede ver si está experimentando este error específico seleccionando el método y utilizando Cmd-G (o Ctrl-G: Buscar> Declaraciones> Área de trabajo). Eclipse no puede encontrar el método que está intentando cambiar de nombre y la búsqueda aparece vacía.

Mi caso sugiere que es posible que el error tenga que ver con métodos con nombres idénticos en diferentes clases. Cuando el problema ocurre con un método, no afecta a la mayoría de los demás.

Refrescar, Proyecto-> Limpiar y reiniciar Eclipse no me ayudaron. La respuesta de Kevin funcionó para mí: "Intente eliminar el proyecto de Eclipse (no elimine el contenido del proyecto en el disco) y luego vuelva a cargarlo".


Si algo que no es demasiado obvio hace fallar un refactor, puede buscar problemas intentando obtener una vista previa del refactor en lugar de intentar ejecutarlo.

Como mencionó Dicky Moore, no puede refactorizar con errores en su proyecto ... Pero estos no siempre son errores de código o problemas de ruta de compilación que marca Eclipse. Así que a veces no parece que haya errores y seguirá fallando. "Vista previa", como se mencionó anteriormente, mostrará estos problemas en un cuadro de diálogo de error, incluso si nunca aparecen en otro lugar.

Desde allí, puede configurar su proyecto para corregir los errores (uno común es que el refactor intenta tener en cuenta una carpeta de salida que no debería, que puede solucionarse excluyendo la carpeta en su Build Path > Source Configuración de Build Path > Source ). o desinstalar complementos problemáticos.


Tuve este problema con Eclipse Helios. Busqué en el directorio .metadata del área de trabajo y abrí el archivo .log. Tenía una cadena de referencias bastante larga relacionada con el error, pero las partes pertinentes de eso eran:

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

y

java.lang.reflect.InvocationTargetException en org.eclipse.jface.operation.ModalContext.run (ModalContext.java:421) en org.eclipse.jface.window.ApplicationWindow $ 1.run (ApplicationWindow.java:759) .swt.custom.BusyIndicator.showWhile (BusyIndicator.java:70) en org.eclipse.jface.window.ApplicationWindow.run (ApplicationWindow.java:756) en org.eclipse.ui.internal.WorkbenchWindow.run (Safety : 2606) en org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform (RefactoringExecutionHelper.java:191) en org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform (Reflex org.eclipse.jdt.ui.refactoring.RenameSupport.perform (RenameSupport.java:197) en org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode.doRename (RenameLinkedMode.java:361). jdt.internal.ui.refactoring.reorg.RenameLinkedMode $ EditorSynchronizer.left (RenameLinkedMode.java:119) en org.eclipse.jface.text.link.LinkedModeModel.exit (LinkedModeModel.java:341) en org.eclipse.jface.text.link.LinkedModeUI $ 4.run (LinkedModeUI.java:1194) en org.eclipse.swt.widgets.RunnableLock.run (RunnableLock.java:35) en la orgía .eclipse.swt.widgets.Synchronizer.runAsyncMessages (Synchronizer.java:134) en org.eclipse.swt.widgets.Display.runAsyncMessages (Display.java:4041) en org.eclipse.swt.widgets.Dispositivos y accesorios .java: 3660)

Fui a Ayuda > Instalar nuevo software > Lo que ya está instalado , y luego seleccioné todo lo relacionado con org.eclipse.swt y hice clic en Desinstalar . Después de reiniciar Eclipse, el problema desapareció y pude refactorizar / renombrar normalmente nuevamente.


Tuvo el mismo problema:

  • clic izquierdo en el nombre de la propiedad en clase java
  • botón derecho del ratón
  • refactor
  • rebautizar
  • hacer el cambio de nombre
  • presiona enter
  • La barra de progreso verde aparece en el menú de pie de página, pero nunca termina
  • para recuperar tengo que matar el eclipse (puede intentar salir pero se bloqueará al guardar el estado de Workbench)

Estoy ejecutando esto en Windows:

  • Versión: Kepler Service Release 2
  • ID de construcción: 20140224-0627

''Arreglo'' el comportamiento por:

  • haciendo un pequeño cambio en el archivo
  • guardando el archivo
  • volvió a intentar el refactor y funcionó bien (aunque hay un retraso incómodo esperando a que el refactor se complete alrededor de cinco segundos)

No hubo errores en el proyecto, nada obvio en los registros cuando se bloquea y eliminar / reimportar el proyecto del área de trabajo tampoco funcionó (y eliminar .classpath .project y .settings antes de volver a importar).


Una solución rápida que funcionó para mí:

  • Agregue el modificador estático a su firma de método ("fuerza" el error de compilación a través de la compilación justo a tiempo en todas las referencias)
  • Refactoriza el nombre del método (los errores permanecen)
  • Elimine el modificador estático (recompile con la firma del método cambiado, los errores desaparecen ...)