Ответ 1
Эта функция действительна только в Java 6 и выше. Я вижу, что вы используете jdk 1.6. Это хорошо. Возможная причина: вы компилируете с помощью -source 1.5
. Это так? Если да, можете ли вы изменить его на -source 1.6
?
Я получаю ошибки компиляции в eclipse при использовании аннотации @Override для класса, который реализует интерфейс.
Уровень соответствия компилятора установлен на Java 6.0.
Я использую последнюю версию 6.0 jdk.
Ошибка: "Метод {methodname} типа {classname} должен переопределять метод суперкласса"
Тот же код отлично работает на Mac с сопоставимой конфигурацией.
public interface ChannelIF {
...
public boolean canSendNarrowcast();
public boolean canSendBroadcast();
}
public class FacebookChannel implements ChannelIF
{
...
@Override
public boolean canSendNarrowcast() { return true; }
@Override
public boolean canSendBroadcast() { return true; }
}
Эта функция действительна только в Java 6 и выше. Я вижу, что вы используете jdk 1.6. Это хорошо. Возможная причина: вы компилируете с помощью -source 1.5
. Это так? Если да, можете ли вы изменить его на -source 1.6
?
У меня тоже есть проблема и только что решена. Измените "Уровень соответствия компилятора" на 1.6 в Project- > щелкните правой кнопкой мыши- > properties- > Java-компилятор.
В eslipse могут использоваться разные версии компиляторов.
См. конфигурацию в eclipse Preference- > Java- > Compiler "Уровень соответствия компилятора". Вы должны выбрать "1.6".
Я только что обнаружил, что при использовании maven мне также нужно изменить pom.xml, чтобы иметь плагин компилятора. У меня были все настройки, которые были правильно заданы, но мне нужен был следующий:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<inherited>true</inherited>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
Итак, у меня была эта проблема, и несколько раз я пропустил эти решения, увидев, что моя версия Java была установлена на 1.7 полностью вниз, а не на использование Maven, и поэтому просто уходит и перезапускает Eclipse пару раз, как предположил @jdowdell, после чего он, похоже, работал до следующего раза, когда я осуществил один из них. Я понял, что когда я снова запускал Eclipse, мне предлагалось сохранить мои файлы, и я понял, что мои интерфейсы не были сохранены, поэтому оригинальный метод, который перегружен, не существует на диске. И вот почему выключение и перезапуск Eclipse устраняет проблему.
tl; dr: убедитесь, что все ваши файлы сохранены.
Похоже, что ваши сигнатуры методов не совпадают. Они должны быть одинаковыми, включая такие вещи, как брошенные проверенные исключения. Отправьте свой код!
Проверьте библиотеку времени выполнения, настройки компилятора, вероятно, отличаются
Щелкните правой кнопкой мыши имя проекта, свойства, путь сборки Java, библиотеки
Посмотрите на версию JRE System Library, более вероятно, что она установлена в 1.5 или ниже. Выберите библиотеку JRE System, затем нажмите "Удалить". Нажмите "Добавить библиотеку", выберите "Системная библиотека JRE", "Далее" Затем либо Workspace Default, либо
У меня была такая же проблема около часа, и тогда она, казалось, загадочно решала себя. Хотел бы я знать, что я сделал. Я начал с настроек рабочей области, установленных для 1.6, нечаянно настроив настройки проекта на 1.5 совместимости. Я обнаружил это и изменил параметры компилятора проекта на 1.6, что позволило устранить некоторые ошибки, но не проблему @Override для интерфейсов. Некоторая комбинация из следующих исправлена:
Один человек, по-видимому, решил проблему через полную деинсталляцию и переустановку всех компонентов, связанных с java/eclipse: http://p2p.wrox.com/book-beginning-android-application-development/87299-override-errors-despite-1-6-a.html