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


в любое время я должен повторно импортировать свои проекты в 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, он использует те же имена аргументов, которые у меня уже были, поэтому я действительно не знаю, где проблема, а затем он автоматически форматирует метод для меня.

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

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

12 1138

12 ответов:

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

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

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

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

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

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

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

Мне пришлось снять флажок проект > построить автоматически, затем сделать проект > очистить, а затем построить снова.

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

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

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

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

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

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

  • .проект
  • .путь к классу

и папку:

  • .настройки

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

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

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

можно найти в:

Проект - > Путь Сборки - > Библиотеки

выберите JRE System Library и нажмите кнопку Edit....

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

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

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

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

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

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

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

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

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

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

затем в контекстном меню проекта перейдите в раздел " Maven - > обновить проект ...- и нажмите кнопку ОК.

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

в моем случае ни одно из решений выше не работает. Я должен проверить мой исходный код в другую папку. В eclipse выберите Файл > переключить рабочие пространства > другое... а затем импортировать код в новые рабочие пространства. после этого он работает.