Ошибки "необходимо переопределить метод суперкласса" после импорта проекта в 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 ответов


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

перейдите в настройки проекта / 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 - > применить.


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

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


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

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

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

и папку:

  • .настройки

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

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


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

находится в разделе:

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

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

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


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

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

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

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


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


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

  1. выберите проект , щелкните правой кнопкой мыши , Свойства
  2. выберите Java Compiler и установите флажок "Включить конкретные настройки проекта"
  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 - > Update Project ...", и нажмите OK.

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


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