it-swarm.com.ru

Почему Eclipse жалуется на @Override в интерфейсных методах?

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

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

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

128
Stefan Kendall

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

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

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


Обновление:

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

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

262
erickson

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

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

37
mitko

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

11
gdoumenc

Настройки проекта могут быть включены. Выберите ваш проект Project > Properties > Java Compiler, uncheckEnable 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 и Eclipse. У меня сработало

8
Henry

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

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

7
akarnokd

Вы также можете попробовать Retro Weaver для создания версии Java из классов Java 6.

1
mie

Используйте 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
Peter Tseng

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

0
IstaLibera

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

0
Ranjan

Я понимаю вашу проблему, измените ваш JDK с вашего JDK больше, чем 1,5

0
Ravi Kumar Ravanam