«Необходимо переопределить метод суперкласса» Ошибки после импорта проекта в Eclipse

1158

В любое время, когда мне нужно повторно импортировать мои проекты в Eclipse (если я переустановил Eclipse или изменил расположение проектов), почти все мои переопределенные методы не отформатированы правильно, в результате чего ошибка The method must override a superclass method.

Возможно, стоит упомянуть об этом в проектах Android. По какой-то причине значения аргументов метода не всегда заполняются, поэтому мне приходится вручную самостоятельно их заполнять. Например:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //These arguments have their correct names
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});

будет изначально заселен следующим образом:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //This methods arguments were not automatically provided    
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});

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

Это становится настоящей проблемой, когда вручную вручную восстанавливать ВСЕ мои переопределенные методы. Если кто-нибудь может объяснить, почему это происходит или как это исправить... Я был бы очень счастлив.

Возможно, это связано с тем, как я форматирую методы, находящиеся внутри аргумента другого метода?

  • 1
    Пожалуйста, проверьте этот пункт, он объясняет использование переопределения. Я считаю, что эта практика очень важна для всего, не только для этой ситуации, в частности. stackoverflow.com/questions/94361/...
Теги:
override
superclass

13 ответов

1326
Лучший ответ

Eclipse по умолчанию использует Java 1.5, и у вас есть классы, реализующие методы интерфейса (которые в Java 1.6 могут быть аннотированы с помощью @Override, но в Java 1.5 могут применяться только к методам, переопределяющим метод суперкласса).

Перейдите в настройки проекта /IDE и установите для уровня компилятора Java значение 1.6, а также убедитесь, что вы выбрали JRE 1.6 для выполнения вашей программы из Eclipse.

  • 34
    Мой проект был установлен на 1.6, поэтому я выбрал для звезд и установил его на 1.5, перестроил, а затем вернулся на 1.6. Чудесным образом это решило мою проблему. Спасибо, что указал мне правильное направление!
  • 6
    имея ту же самую проблему ... попробовал предложение, данное в этом ответе, но все еще не успешный. :( :(
Показать ещё 9 комментариев
320

С помощью Eclipse Galileo вы перейдете в пункт меню Eclipse → Preferences, затем в диалоговом окне выберите Java и Compiler.

Теперь он все еще может показывать уровень соответствия компилятора на уровне 1.6, но вы все еще видите эту проблему. Теперь выберите ссылку "Настроить параметры проекта...", и там вы увидите, что проект установлен в 1.5, теперь измените это на 1.6. Вам нужно будет сделать это для всех затронутых проектов.

Этот византийский меню/диалоговый интерфейс типичен для дизайна UI с плохим дизайном Eclipse.

73

В случае, если это случается с любым другим, кто пробовал как метод alphazero, так и Paul, и все еще не работал.

Для меня eclipse каким-то образом "кэширует" ошибки компиляции даже после выполнения Project > Clean...

Мне нужно было снять флажок Project > Build Automatically, затем выполнить проект > Очистить, а затем снова создать.

Кроме того, при возникновении сомнений попробуйте перезапустить Eclipse. Это может исправить множество неудобных, необъяснимых ошибок.

  • 4
    Я сделал не только это, но и снял флажок «Начать сборку автоматически» в диалоговом окне «Очистить». Только тогда у меня это сработало.
  • 3
    Мне также пришлось перезапустить затмение даже после удаления ошибок.
Показать ещё 1 комментарий
39

Чтобы устранить эту проблему, перейдите в свойства проекта → Компилятор Java → Выберите уровень соответствия компилятора 1.6- > Применить.

20

Ответ Павла частично работал у меня. Тогда у меня была одна ошибка. Таким образом, в дополнение к этому, мне также пришлось перейти к Properties- > Project Facets и установить версию Java с 1.5 до 1.6.

Может быть, это помогает.

13

Ребята в моем случае ни одно из вышеперечисленных решений не работало.

Мне пришлось удалить файлы в рабочей области проекта:

  • .project
  • .classpath

И папка:

  • .settings

Затем я скопировал те из аналогичного проекта, который работал раньше. Это удалось исправить мой сломанный проект.

Конечно, не используйте этот метод, прежде чем пытаться использовать предыдущие альтернативы!

  • 7
    перед этим попробуйте перезапустить затмение. (работал для меня)
12

Если ничего из вышеизложенного не помогает, убедитесь, что у вас есть соответствующая " среда выполнения", а не "альтернативная JRE".

Можно найти в разделе:

Проект → Путь сборки → Библиотеки

Выберите JRE System Library и нажмите Edit....

Если выбрано "Alternate JRE...", измените его на подходящую "среду выполнения", например JavaSE-1.8 (jre1.8.0_60). Не знаю, почему, но это решит его.

  • 2
    Я выбрал «Среду выполнения», затем нажал «ОК», и ошибка исчезла. Затем я вернулся к этому же диалоговому окну и выбрал «JRE (...) рабочего пространства по умолчанию», которое было моим предыдущим выбором, когда я получал ошибку от Eclipse, затем нажал «ОК», и ошибка не произошла?!? Это должно быть ошибка Eclipse UI или что-то в этом роде (я нахожусь на Eclipse Neon 4.6.2)
10

Это второй раз, когда мы сталкиваемся с этой проблемой. первый раз в соответствии с рекомендацией alphazero. но во второй раз, когда я установил 1.6, он не работает так, как "CACHE" эта ошибка после очистки и восстановления.

Попытайтесь отключить "Build Automatically", как еще раз, когда Rollin_s said → ошибка!

Итак, я удалил проблемный проект (уже установленный в 1.6) из Package Explorer и снова импортировал его → он запустил восстановление и на этот раз не ошибся

Надеюсь, что это поможет кому-то

9

Исправление должно переопределить ошибку метода суперкласса, это не сложно, вам просто нужно изменить исходную версию Java на 1.6, поскольку из Java 1.6 @Override может использоваться аннотация, а также метод интерфейса. Чтобы изменить исходную версию на 1.6, выполните следующие шаги:

  • Выберите проект, щелкните правой кнопкой мыши, Свойства
  • Выберите Java Compiler и установите флажок "Включить специальные настройки проекта"
  • Теперь сделайте уровень соответствия компилятора 1.6.
  • Применить изменения
7

Перейдите в windows- > preferences → Java → compiler → Выберите уровень соответствия компилятора 1.6 (какая версия вы хотите) → Apply- > ok. теперь его работа.

6

В моем случае эта проблема возникла, когда я импортировал проект Maven в Eclipse. Чтобы решить эту проблему, я добавил следующее в pom.xml:

<properties>
   ...
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Затем в контекстном меню проекта перейдите в "Maven → Update Project..." и нажмите OK.

Что это. Надеюсь, это поможет.

  • 0
    Спасибо, я думаю, это переопределяет родительскую конфигурацию pom или что-то в этом роде. (Я рекламирую проблему с другой стороны, никаких проблем с затмением, но компилятор Maven выбросил меня "должен переопределить и т. Д.")
5

В моем случае ни один из вышеперечисленных решений не работает. Мне нужно проверить исходный код на другую папку. Из eclipse выберите File > Switch workSpaces > Other... и затем импортируйте код в новые рабочие области. он работает после этого.

0

Это происходит, когда ваш проект maven использует другой уровень соответствия компилятору, а Eclipse IDE использует другой уровень соответствия компилятора. Чтобы это исправить, нам нужно изменить уровень соответствия компилятора проекта Maven на уровень использования IDE.

1) Чтобы увидеть уровень соответствия Java Compiler использует в Eclipse IDE

*) Окно → Настройки → Компилятор → Уровень соответствия компилятора: 1,8 (или 1,7, 1,6 и т.д.)

2) Изменить уровень соответствия Java Compiler проекта Maven

*) Перейдите в "Проект" → "Свойства" → Выберите "Компилятор Java" → Изменить уровень соответствия компилятора: 1,8 (или 1,7, 1,6 и т.д.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню