Затмение: «Refactor - Rename» полностью испорчен, заменяя произвольные символы в файле - PullRequest
2 голосов
/ 06 июля 2011

При рефакторинге имени класса Eclipse в последнее время демонстрирует очень странное поведение. Например, давайте посмотрим на один из наших классов:

public class CampaignCSVPanel extends ContentPanel {

   private FileUploadField uploadFieldCsv = new FileUploadField();
   ...
}

и я переименовываю его в "CampaignCsvPanel", тогда происходит следующее:

public class CampaignCSVPanel extends ContentPanel{

   private FileUploadField uploadFielCampaignCsvPanelploadField();
   ...
}

Странно - и это происходит в основном каждый раз Я выполняю переименование класса. Что еще:

  • Я уже создал совершенно новое рабочее пространство (и снова проверил те же проекты),
  • и я установил свежую версию Eclipse (т.е. это происходит как в Eclipse 3.6, так и в 3.7).

Полагаю, это должно иметь отношение к проектам в рабочей области, потому что это происходит только с проектами одной компании, в которой я работаю, а не с другими наборами проектов, над которыми я работаю , У вас есть идея, в чем может быть причина?

(Системные характеристики:

  • Ubuntu Linux 11.04, 64-битная
  • Затмение 3,6 / 3,7
  • Плагины: Subversive, m2eclipse, Google (GWT).
  • Я пробовал и OpenJDK, и SunJDK (1.6.0_24). )

Ответы [ 3 ]

2 голосов
/ 06 июля 2011

Попробуйте это:

Перейдите в Windows -> Настройки -> Java и снимите флажок «Переименовать в редакторе без диалога»

(Я смотрю на недавний выпуск Eclipse Indigo, я только предполагаю, что настройки в предыдущих версиях такие же)

Теперь вы можете просмотреть все изменения, которые он намерен внести.

Если вы можете сделать это и убедиться в этом диалоге, что он делает какие-то сумасшедшие замены, то вам, безусловно, следует сообщить об ошибке в Eclipse и предоставить воспроизводимый пример. Могу поспорить, что, посмотрев на список вещей, которые он намеревается заменить, вы найдете какое-то другое объяснение этой проблемы.

1 голос
/ 06 июля 2011

Я обнаружил проблему: в проекте используются svn-теги, такие как $Date: $. Когда я их удаляю, проблема исчезает. Когда я вставляю их вручную (чтобы убедиться, что я не вставил недопустимые символы), проблема снова появляется.

Я немного поэкспериментировал, и проблема также исчезает, когда я переключаю SVN-коннектор с JavaHL на SVNKit.

1 голос
/ 06 июля 2011

Это раздражает. Очевидно, что механизм рефакторинга знает , что он должен что-то заменить, но заменяет символы в неправильной позиции ... - нет ответа, но есть некоторые дополнительные идеи / тесты

  1. Похоже, вы проверяете завершенные проекты. Попробуйте импортировать источники только в новый проект, чтобы проверить, не возникла ли проблема или нет.
  2. Если метаданные проекта были проверены (не следует, но мы никогда не узнаем), очистите проект сразу после проверки проекта.
  3. Проверьте кодировку символов исходных файлов этой компании. Возможно, есть какое-то несоответствие, которое приводит к тому, что редактор заменяет неправильные позиции И дважды проверьте исходные файлы на наличие странных непечатаемых байтов ascii ... опять же, мы никогда не узнаем ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...