Ошибка "Must Override a Superclass Method" после импорта проекта в Eclipse
Почему возникает ошибка и как её исправить
Проблема связана с тем, что при импорте проекта Eclipse неправильно определил уровень языка Java для компилятора. Аннотация @Override в Java 5 работала только для методов, переопределяющих методы из суперкласса (не интерфейса). Начиная с Java 6, разрешено использовать @Override и для методов, реализующих интерфейс. В Android SDK многие методы (например, onCreateOptionsMenu) объявлены в интерфейсе MenuInflater, который реализуется в Activity.
Если уровень компилятора установлен ниже 1.6, Eclipse считает такие аннотации ошибочными. Вот пошаговое решение:
Шаг 1: Проверьте уровень компилятора для проекта
- Кликните правой кнопкой по проекту → Properties (Свойства)
- Выберите Java Compiler
- Убедитесь, что галочка "Enable project specific settings" включена
- В выпадающем списке Compiler compliance level выберите
1.6(или выше, например 1.7) - Нажмите 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.
Проверьте:
- Кликните правой кнопкой по проекту → Build Path → Configure Build Path
- Перейдите на вкладку Libraries
- Убедитесь, что там есть
android.jar(обычно путь:android-sdk/platforms/android-XX/android.jar) - Если его нет — нажмите 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 отличались.
Ответов пока нет.
Войдите чтобы оставить ответ