it-swarm.com.ru

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

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

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

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

1202
Tim H

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

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

1406
alphazero

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

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

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

306
Paul

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

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

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

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

76
Rollin_s

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

41
false9striker

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

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

21
tareq

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

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

  • .project
  • .classpath

И папка:

  • .settings

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

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

13
will824

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

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

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

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

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

12
Blauhirn

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

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

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

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

10
ob.yann

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

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

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

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

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

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

6
mljrg

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

5
Hắc Huyền Minh

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