Avatar ·

Ошибка "Must Override a Superclass Method" после импорта проекта в Eclipse

Всем привет! Я новичок в Java и Android разработке. Неделю писал проект в Eclipse, всё работало отлично. Сегодня решил перенести проект на другой компьютер — скопировал папку, импортировал через File → Import → Existing Projects into Workspace. И тут началось: почти все методы с аннотацией @Override подчеркнуты красным, а при наведении Eclipse пишет "The method ... must override a superclass method". Вот пример моего кода: ```java public class MyActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } } ``` Раньше на старом ПК всё компилировалось, приложение запускалось на эмуляторе. Теперь Eclipse ругается на onCreateOptionsMenu, хотя метод точно есть в родительском классе Activity. Я проверил: в build path подключена Android SDK (API 19), проект чистый, никаких библиотек не менял. Пробовал: - Clean → Build project - Project → Properties → Java Compiler — стоит 1.7 - Удаление и повторный импорт проекта Ничего не помогает. В интернете пишут про настройки компилятора, но я не понимаю, что именно менять. Подскажите, пожалуйста, в чём может быть дело? Может, это баг Eclipse или я что-то упустил при импорте? Заранее спасибо! <<>>

Почему возникает ошибка и как её исправить

Проблема связана с тем, что при импорте проекта Eclipse неправильно определил уровень языка Java для компилятора. Аннотация @Override в Java 5 работала только для методов, переопределяющих методы из суперкласса (не интерфейса). Начиная с Java 6, разрешено использовать @Override и для методов, реализующих интерфейс. В Android SDK многие методы (например, onCreateOptionsMenu) объявлены в интерфейсе MenuInflater, который реализуется в Activity.

Если уровень компилятора установлен ниже 1.6, Eclipse считает такие аннотации ошибочными. Вот пошаговое решение:

Шаг 1: Проверьте уровень компилятора для проекта

  1. Кликните правой кнопкой по проекту → Properties (Свойства)
  2. Выберите Java Compiler
  3. Убедитесь, что галочка "Enable project specific settings" включена
  4. В выпадающем списке Compiler compliance level выберите 1.6 (или выше, например 1.7)
  5. Нажмите Apply and Close

Шаг 2: Проверьте настройки фабрики (Workspace)

Если ошибка осталась, перейдите:

  • Window → Preferences → Java → Compiler
  • В поле Compiler compliance level установите 1.6 или 1.7
  • Нажмите Apply

Шаг 3: Очистите проект и перестройте его

Project → Clean → Clean all projects → OK

После этого Eclipse перекомпилирует все файлы с новыми настройками.

Шаг 4: Проверьте Android SDK версию

Убедитесь, что в Project → Properties → Android выбрана правильная целевая версия SDK (например, API 19). Если SDK не установлен на новом компьютере, Eclipse не сможет найти родительские классы и методы.

Дополнительные советы

  • Если проект старый (до 2014 года), проверьте, не используется ли в нём Java 5. В таком случае просто удалите аннотацию @Override для методов интерфейсов.
  • Иногда помогает File → Invalidate Caches / Restart (если используете Android Studio), но в Eclipse достаточно перезапустить IDE после изменения настроек.
  • Для быстрой проверки: закомментируйте @Override и посмотрите, исчезнет ли ошибка. Если да — 100% проблема в уровне компилятора.

После этих действий красные подчёркивания должны пропасть. Если нет — проверьте, импортировали ли вы проект как Existing Android Project (а не просто Java-проект).

<<>>

Альтернативное решение: проверка classpath и библиотек

Иногда ошибка возникает не из-за уровня компилятора, а из-за того, что Eclipse не может найти родительский класс Activity. Это случается, если при импорте проекта не подключилась Android SDK.

Проверьте:

  1. Кликните правой кнопкой по проекту → Build Path → Configure Build Path
  2. Перейдите на вкладку Libraries
  3. Убедитесь, что там есть android.jar (обычно путь: android-sdk/platforms/android-XX/android.jar)
  4. Если его нет — нажмите Add Library → Android Classpath Container

Также проверьте файл .classpath в корне проекта. В нём должна быть строка:

<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>

Если после всех настроек ошибка остаётся — попробуйте удалить файлы .classpath и .project из папки проекта, а затем заново импортировать его через File → Import → Android → Existing Android Code Into Workspace. Eclipse пересоздаст эти файлы автоматически.

Этот метод помогает, если проект был скопирован с другого компьютера, где пути к SDK отличались.