Помилки "Потрібно переосмислити метод надкласового класу" після імпорту проекту в Eclipse


1250

Щоразу, коли мені доведеться повторно імпортувати свої проекти в 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

Відповіді:


1432

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

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


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. Установка старішої
версії

4
Слід зазначити (як і в коментарях до інших відповідей), часто потрібна чиста збірка з подальшим перезапуском.
gsingh2011

308

За допомогою Eclipse Galileo ви перейдете до пункту меню Eclipse -> Preferences, а потім у діалоговому вікні виберіть Java та Compiler.

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

Цей візантійський інтерфейс меню / діалогу є типовим для поганого дизайну інтерфейсу Eclipse.


78

У випадку, якщо це трапиться з кимось іншим, хто спробував і алфазеро, і метод Павла, і досі не вийшло.

Для мене затемнення якимось чином "кешувало" помилки компіляції навіть після виконання проекту> Очистити ...

Мені довелося зняти прапорець Project> Build Automatically, потім зробити Project> Clean та знову створити його.

Також, коли виникають сумніви, спробуйте перезапустити Eclipse . Це може виправити безліч незручних, незрозумілих помилок.


4
Я не тільки це зробив, але зняв позначку "Почати збірку автоматично" у діалоговому вікні "Очистити". Тільки тоді це працювало на мене.
Вілерсон

3
Мені довелося також перезапустити затемнення навіть після видалення помилок.
Дейв Кемерон

42

Щоб вирішити цю проблему, перейдіть до своїх властивостей Project -> Java компілятор -> Виберіть рівень відповідності компілятора до 1.6-> Застосувати.


22

Відповідь Павла працювала на мене частково. У мене тоді була одна помилка. Тож, крім цього, мені також довелося перейти до Властивості-> Фасетки проекту і там встановити версію Java від 1,5 до 1,6.

Можливо, це допомагає.


14

Хлопці в моєму випадку жодне з вищезгаданих рішень не спрацювало.

Мені довелося видалити файли з робочої області Project:

  • .проект
  • .classpath

І папка:

  • .установки

Потім я скопіював ці з аналогічного проекту, який працював раніше. Це вдалося виправити мій розбитий проект.

Звичайно, не використовуйте цей метод перед тим, як спробувати попередні альтернативи !.


14

Якщо нічого з перерахованого вище не допомагає, переконайтеся, що у вас вибрано належне " середовище виконання ", а не "альтернативний JRE".

Його можна знайти в:

Проект -> Шлях побудови -> Бібліотеки

Виберіть JRE System Libraryі натисніть Edit....

Якщо вибрано "Alternate JRE ...", змініть його на придатне "середовища виконання" JavaSE-1.8 (jre1.8.0_60). Не маю ідеї чому, але це вирішить.


2
Я вибрав "Середовище виконання", потім натиснув ОК, і помилка зникла. Потім я повернувся до цього ж діалогу і вибрав "JRE (...) для робочої області за замовчуванням", який був моїм попереднім вибором, коли я отримував помилку від Eclipse, потім натискав кнопку ОК, і помилка не сталася?!? Це має бути помилка інтерфейсу Eclipse або щось подібне (я на Eclipse Neon 4.6.2)
mljrg

11

Це вдруге я стикаюся з цією проблемою. Перший раз за рекомендацією альфазеро це спрацювало. але вдруге я встановив 1.6, це не працює, як "CACHE", ця помилка після очищення та відновлення.

Спробуйте вимкнути "Автоматично будувати", як сказав Rollin_s -> помилка все ще тут!

Тож я видалив проблемний проект (вже встановлений на 1.6) з Провідника пакетів та імпортую його знову -> він запускає відновлення і цього разу немає помилок

Сподіваюся, це допоможе комусь


10

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

  1. Виберіть Проект, Клацніть правою кнопкою миші та Властивості
  2. Установіть Java-компілятор і поставте прапорець "Увімкнути конкретні параметри проекту"
  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 -> Update Project ...» та натисніть OK.

Це воно. Сподіваюсь, це допомагає.


Дякую, я думаю, це переосмислює конфігурацію батьківських пом або щось подібне. (Я
оголошую

6

У моєму випадку жодне з вищезгаданих рішень не працює. Я повинен перевірити свій вихідний код в іншій папці. З затемнення виберіть «Файл»> «Переключити робочі простори»> «Інше ...», а потім імпортуйте код до нових робочих просторів. це працює після цього.


2

Це трапляється, коли ваш проект maven використовує різний рівень відповідності компілятора, а Eclipse IDE використовує інший рівень відповідності компілятора. Для того, щоб виправити це, нам потрібно змінити рівень відповідності компілятора проекту Maven на рівень, який використовує IDE.

1) Щоб побачити використання рівня компілятора Java у рівні Eclipse IDE

*) Вікно -> Налаштування -> Компілятор -> Рівень відповідності компілятора: 1,8 (або 1,7, 1,6,, тощо)

2) Змінити рівень відповідності Java Compiler проекту Maven

*) Перейдіть до "Проект" -> "Властивості" -> Виберіть "Компілятор Java" -> Змініть рівень відповідності компілятора: 1,8 (або 1,7, 1,6,, тощо)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.