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

1251

В любое время, когда мне нужно повторно импортировать мои проекты в Eclipse (если я переустановил Eclipse или изменил расположение проектов), почти все мои переопределенные методы не отформатированы правильно, вызывая ошибку:

Метод должен переопределить метод суперкласса

Стоит отметить, что по каким-то причинам это касается проектов 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/…
oagostinho

Ответы:

1433

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

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

alphazero
источник
35
Мой проект был установлен на 1.6, поэтому я выбрал для звезд и установил его на 1.5, перестроил, а затем вернулся на 1.6. Чудесным образом это решило мою проблему. Спасибо, что указал мне правильное направление!
Майкл Крауклис
6
имея ту же самую проблему ... попробовал предложение, данное в этом ответе, но все еще не успешный. :( :(
aditya_gaur
6
@MichaelKrauklis Мне 1.6 и у меня эта проблема. Я установил на 1,5 и почистил его, вернул на 1,6 и почистил снова. Все еще не решено. Любые идеи?
Pacerier
6
Та же проблема здесь, в моем случае, я не установил JDK 1.6, только последний 1.7, который, очевидно, не работает с Android. Установка старого 1.6 и последующее выполнение этих инструкций должно работать :)
NoBugs
4
Следует упомянуть (как в комментариях к другим ответам), часто требуется чистая сборка с последующим перезапуском.
gsingh2011
308

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

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

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

Павел
источник
78

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

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

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

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

Rollin_s
источник
4
Я сделал не только это, но и снял флажок «Начать сборку автоматически» в диалоговом окне «Очистить». Только тогда это сработало для меня.
Wilerson
3
Мне также пришлось перезапустить затмение, даже после удаления ошибок.
Дейв Кэмерон
42

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

false9striker
источник
22

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

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

Ulrich
источник
14

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

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

  • .project
  • .classpath

И папка:

  • .settings

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

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

will824
источник
14

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

Быть найденным под:

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

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

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

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

Это мой второй раз сталкиваюсь с этой проблемой. в первый раз по рекомендации альфазеро это сработало. но во второй раз я установил на 1.6, он не работает, как «CACHE», эта ошибка после очистки и перестройки.

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

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

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

ob.yann
источник
10

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

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

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

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

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

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

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

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

Hắc Huyền Minh
источник
2

Это происходит, когда ваш проект 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 и т. Д.)

HashanR
источник