Почему Eclipse жалуется на @Override в интерфейсных методах? - PullRequest
129 голосов
/ 12 июня 2009

У меня есть существующий проект, который использует @Override для методов, которые переопределяют методы interface , а не методы суперкласса. Я не могу изменить это в коде, но я хотел бы, чтобы Eclpse прекратил жаловаться на аннотацию, поскольку я все еще могу строить с Maven.

Как бы я отключил эту ошибку?

Примечание: из-за требований проекта мне нужно скомпилировать для Java 1.5.

Ответы [ 10 ]

263 голосов
/ 12 июня 2009

Использование аннотации @Override в методах, реализующих методы, объявленные интерфейсом, допустимо только в Java 6 и более поздних версиях. Это ошибка в Java 5.

Убедитесь, что ваши проекты IDE настроены на использование Java 6 JRE и что «совместимость с исходным кодом» установлена ​​на уровне 1.6 или выше. Откройте диалоговое окно «Окно»> «Настройки» и выберите «Java»> «Компилятор». Там вы можете установить «Уровень соответствия компилятора» на 1.6.

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


Обновление:

Ошибка в Java 5 не только в Eclipse; использование javac непосредственно из командной строки приведет к той же ошибке. Это недопустимый исходный код Java 5.

Однако вы можете указать опцию -target 1.5 для JDK 6 javac, которая будет генерировать файл класса версии Java 5 из исходного кода Java 6.

37 голосов
/ 20 июля 2010

Проект-> Свойства-> Java-компилятор ->

Включить специфические настройки проекта -yes Соответствие компилятора - 1.6 сгенерированные файлы классов и совместимость с исходным кодом - 1,5

11 голосов
/ 08 марта 2011

Проверьте также, есть ли у проекта фасет. Версия Java может быть переопределена там.

8 голосов
/ 19 июля 2014

Могут быть включены специфичные для проекта настройки. Выберите ваш проект Project > Properties > Java Compiler, uncheck Enable project specific settings или измените Jdk 1.6 и выше, не забывая о соответствующем JRE.
Если это не работает, удалите ваш проект из Eclipse, удалите файлы .settings folders, .project, .classpath. clean and build the project, import it back into eclipse and then reset your Java compiler. Clean and build your project и затмение. У меня это сработало

7 голосов
/ 12 июня 2009

Вы можете изменить настройки компилятора так, чтобы он принимал синтаксис Java 6, но генерировал вывод Java 5 (насколько я помню). И установите «Совместимость с сгенерированными файлами классов» немного ниже, если это необходимо вашей средой выполнения. Обновление : я проверил Eclipse, но он жалуется, если я устанавливаю совместимость с исходниками на 1.6 и совместимость с классами на 1.5. Если 1.6 не разрешен, я обычно вручную закомментирую аннотирующие аннотации @Override в источнике (что не помогает вашему случаю).

Update2: Если вы делаете только ручную сборку, вы можете написать небольшую программу, которая копирует исходный проект в новый, убирает аннотации @Override из исходных кодов java, и вы просто нажимаете Очистить проект в Eclipse.

1 голос
/ 08 августа 2012

Используйте Eclipse для поиска и замены (удаления) всех экземпляров «@Override». Затем добавьте обратно неинтерфейсные переопределения, используя «Очистить».

Шаги:

  1. Выберите проекты или папки, содержащие ваши исходные файлы.
  2. Перейдите в «Поиск> Поиск ...» (Ctrl-H), чтобы открыть диалоговое окно поиска.
  3. Перейти на вкладку «Поиск файлов».
  4. Введите "@Override" в "Содержащий текст" и "* .java" в "Шаблоны имен файлов". Нажмите «Заменить ...», затем «ОК», чтобы удалить все экземпляры «@Override».
  5. Перейдите в «Окно> Настройки> Java> Стиль кода> Очистить» и создайте новый профиль.
  6. Отредактируйте профиль и снимите все, кроме «Отсутствующий код> Добавить отсутствующие аннотации> @Override». Убедитесь, что «Реализация методов интерфейса» не отмечена.
  7. Выберите проекты или папки, содержащие ваши исходные файлы.
  8. Выберите «Source> Clean Up ...» (Alt + Shift + s, затем u), а затем «Finish», чтобы добавить неинтерфейсы переопределения.
1 голос
/ 13 июня 2009

Вы также можете попробовать Retroweaver для создания версии Java5 из классов Java6.

0 голосов
/ 07 июня 2017

Даже после изменения параметра соответствия компилятора на 1.6 или 1.7 с вкладка окна, затем предпочтения, затем Java, затем компилятор и установка соответствие компилятору, у меня все еще была эта проблема. Идея в том, что мы нужно зайти в папку проекта, щелкнуть правой кнопкой мыши, установить Java и установить компилятор соответствие 1.6 или выше. Это сработало для меня.

0 голосов
/ 28 ноября 2016

Конфигурирование того, что проекты IDE настроены на использование Java 6 JRE или выше, иногда не устраняет ошибку затмения. Для меня перезапуск Eclipe IDE помог.

0 голосов
/ 23 июня 2016

Я понял вашу проблему, измените ваш jdk с вашего jdk на более чем 1.5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...