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

avatar
Tim H
5 ноября 2009 в 03:17
260263
13
1283

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

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

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

Источник
oagostinho
9 августа 2012 в 10:17
1

Пожалуйста, отметьте этот пункт, он объясняет использование переопределения. Я считаю, что такая практика очень важна для всего, не только для этой ситуации в частности. coderhelper.com/questions/94361/…

Ответы (13)

avatar
alphazero
5 ноября 2009 в 03:33
1443

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

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

Michael Krauklis
9 февраля 2011 в 20:43
35

Мой проект был установлен на 1.6, так что я выстрелил для звезд и установил его на 1.5, перестроил, а затем вернулся на 1.6. Чудом это решило мою проблему. Спасибо, что указали мне правильное направление!

aditya_gaur
25 августа 2011 в 12:22
6

с той же проблемой ... попробовал предложение, данное в этом ответе, но все еще не увенчалось успехом. :( :(

Pacerier
13 февраля 2012 в 22:42
6

@MichaelKrauklis У меня 1.6, и у меня эта проблема. Я установил 1.5, почистил, вернул 1.6 и снова почистил. Все еще не решено. Любые идеи?

NoBugs
22 июля 2012 в 02:31
6

Та же проблема, в моем случае я не установил JDK 1.6, только последнюю версию 1.7, которая, по-видимому, не работает с Android. Установка более ранней версии 1.6 и последующее следование этим инструкциям должны сработать :)

Vasile Jureschi
14 октября 2012 в 12:33
0

Если приведенные выше решения не помогли, вы можете просто удалить ошибки в представлении «Проблемы» после установки компилятора на 1.6.

gsingh2011
23 мая 2013 в 03:45
4

Следует упомянуть (как и в комментариях к другим ответам) часто требуется чистая сборка с последующим перезапуском.

J4cK
28 октября 2013 в 17:23
2

Просто измените 1.5 на 1.6 в YourProject-> RightClick-> Properties-> Java Compiler-> 1.5, на 1.6. Применить и Да, чтобы восстановить.

Jacob van Lingen
29 июля 2014 в 08:40
1

Большое спасибо, я думал, что схожу с ума (проект был 1.6, но так же, как Майкл, установив его на 1.5 и обратно, исправил эту проблему)!

Matthis Kohli
23 июня 2015 в 08:19
0

Как сказал Ананд Сандерраман, этот ответ в сочетании со следующим ответом - вот решение.

uvsmtid
24 февраля 2016 в 05:19
0

ИСПРАВЛЕНО. Я не мог надежно избавиться от проблемы, пока не настроил Maven (вместо Eclipse) с помощью <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>

phil
30 января 2017 в 13:00
0

Спасибо. Установка версии Java в Project-> Properties-> Project Facets-> Java с 1.5 на 1.6 также помогает решить эту проблему.

avatar
Vikas Piprade
29 августа 2020 в 14:14
0

Это 2020 год -

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

enter image description here

avatar
HashanR
21 декабря 2018 в 18:03
2

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

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

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

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

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

avatar
mljrg
22 февраля 2017 в 18:30
11

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

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

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

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

Asoub
28 апреля 2017 в 13:05
0

Спасибо, я думаю, это переопределяет конфигурацию родительского pom или что-то в этом роде. (Я объявляю проблему наоборот, никаких проблем с eclipse, но компилятор maven бросил мне "необходимо переопределить и т. Д.")

avatar
phil294
4 сентября 2015 в 21:44
14

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

Найти по:

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

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

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

mljrg
22 февраля 2017 в 18:11
2

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

avatar
Sunil
21 апреля 2015 в 06:23
10

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

  1. Выберите проект, щелкните правой кнопкой мыши, выберите "Свойства"
  2. Выберите Java Compiler и установите флажок «Включить настройки для конкретного проекта»
  3. Теперь установите уровень соответствия компилятора 1.6
  4. Применить изменения
avatar
ulrich
5 февраля 2014 в 16:25
22

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

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

avatar
Hắc Huyền Minh
16 июня 2013 в 04:32
6

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

avatar
ob.yann
14 декабря 2012 в 06:20
11

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

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

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

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

avatar
will824
28 декабря 2011 в 20:31
14

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

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

  • .project
  • .classpath

И папка:

  • . Настройки

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

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

avatar
false9striker
26 декабря 2011 в 09:38
41

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

avatar
Rollin_s
26 января 2011 в 17:22
80

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

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

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

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

Wilerson
27 июня 2012 в 02:02
4

Я сделал не только это, но и снял флажок «Запускать сборку автоматически» в диалоговом окне «Очистить». Только тогда у меня это сработало.

Dave Cameron
2 января 2013 в 05:16
3

Мне также пришлось перезапустить eclipse, даже после удаления ошибок.

avatar
Paul
8 сентября 2010 в 03:48
308

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

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

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