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

1283

Каждый раз, когда мне приходится повторно импортировать свои проекты в 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
  • 1
    Пожалуйста, отметьте этот пункт, он объясняет использование переопределения. Я считаю, что такая практика очень важна для всего, не только для этой ситуации в частности. stackoverflow.com/questions/94361/…oagostinho 9 авг.
1443

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

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

11
  • 35 год
    Мой проект был установлен на 1.6, так что я выстрелил для звезд и установил его на 1.5, перестроил, а затем вернулся на 1.6. Чудом это решило мою проблему. Спасибо, что указали мне правильное направление! Michael Krauklis 9 фев '11 в 20:43
  • 6
    с той же проблемой ... попробовал предложение, данное в этом ответе, но все еще не увенчалось успехом. :( :(aditya_gaur 25 авг.
  • 6
    @MichaelKrauklis У меня 1.6, и у меня эта проблема. Я установил 1.5, почистил, вернул 1.6 и снова почистил. Все еще не решено. Любые идеи? Pacerier 13 фев '12 в 22:42
  • 6
    Та же проблема, в моем случае я не установил JDK 1.6, только последнюю версию 1.7, которая, по-видимому, не работает с Android. Установка более ранней версии 1.6 с последующим выполнением этих инструкций должна сработать :)NoBugs 22 июля '12 в 2:31
  • 4
    Следует упомянуть (как и в комментариях к другим ответам) часто требуется чистая сборка с последующим перезапуском. gsingh2011 23 мая '13 в 3:45
308

В Eclipse Galileo вы переходите к пункту меню Eclipse -> Preferences, затем выбираете Java и компилятор в диалоговом окне.

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

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

0
80

На случай, если это случится с кем-то еще, кто попробовал как alphazero, так и метод Пола, но все равно не сработал.

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

Мне пришлось снять флажок «Проект»> «Построить автоматически», затем выполнить «Проект»> «Очистить», а затем снова выполнить сборку.

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

2
  • 4
    Я сделал не только это, но и снял флажок «Запускать сборку автоматически» в диалоговом окне «Очистить». Только тогда у меня это сработало. Wilerson 27 июня '12 в 2:02
  • 3
    Мне также пришлось перезапустить eclipse, даже после удаления ошибок. Dave Cameron 02 янв.
41

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

0
22

Ответ Пола сработал для меня частично. У меня тогда еще была одна ошибка. Итак, в дополнение к этому, мне также пришлось перейти в Свойства-> Фасеты проекта и установить версию Java с 1.5 до 1.6.

Может, это поможет.

0
14

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

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

  • .проект
  • .classpath

И папка:

  • .настройки

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

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

0
14

Если ничего из вышеперечисленного не помогает, убедитесь, что у вас выбрана правильная « Среда выполнения », а не «Альтернативная среда JRE».

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

Project -> Build Path -> Libraries

Выберите JRE System Libraryи щелкните Edit....

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

1
  • 2
    Я выбрал «Среду выполнения», затем нажал ОК, и ошибка исчезла. Затем я вернулся к тому же самому диалоговому окну и выбрал «JRE по умолчанию для рабочего пространства (...)», который был моим предыдущим выбором, когда я получал сообщение об ошибке от Eclipse, затем нажал OK, и ошибка не произошла?!? Это должно быть ошибка пользовательского интерфейса Eclipse или что-то в этом роде (я использую Eclipse Neon 4.6.2)mljrg 22 фев '17 в 18:11
11

Я второй раз сталкиваюсь с этой проблемой. Впервые по рекомендации alphazero это сработало. но во второй раз, когда я установил 1.6, он не работает, как «КЭШИРОВАТЬ» эту ошибку после очистки и восстановления.

Попробуйте отключить 'Build Automatically', как сказал Rollin_s -> ошибка все еще здесь!

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

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

11

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

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

Затем в контекстном меню проекта перейдите в «Maven -> Обновить проект ...» и нажмите ОК.

Вот и все. Надеюсь это поможет.

1
  • Спасибо, я думаю, это переопределяет конфигурацию родительского pom или что-то в этом роде. (Я объявляю проблему наоборот, никаких проблем с eclipse, но компилятор maven бросил мне "необходимо переопределить и т. Д.")Asoub 28 апр '17 в 13:05
10

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

  1. Выберите "Проект", щелкните правой кнопкой мыши, выберите "Свойства".
  2. Выберите «Компилятор Java» и установите флажок «Включить настройки для конкретного проекта».
  3. Теперь сделайте уровень соответствия компилятора 1.6.
  4. Применить изменения
6

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

2

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

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

*) Окно -> Настройки -> Компилятор -> Уровень соответствия компилятора: 1.8 (или 1.7, 1.6 и т. Д.)

2) Чтобы изменить уровень соответствия компилятора Java проекта Maven

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

0

Это 2020 год -

Проект> Щелкните правой кнопкой мыши> Компилятор Java> Уровень соответствия компилятора> Измените это на 1.8 [или последний уровень]

введите описание изображения здесь