@Override ошибка компиляции, реализация интерфейса (eclipse jdk1.6.0_23 linux)

Я получаю ошибки компиляции в 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; }
}

Ответы

Ответ 1

Эта функция действительна только в Java 6 и выше. Я вижу, что вы используете jdk 1.6. Это хорошо. Возможная причина: вы компилируете с помощью -source 1.5. Это так? Если да, можете ли вы изменить его на -source 1.6?

Ответ 2

У меня тоже есть проблема и только что решена. Измените "Уровень соответствия компилятора" на 1.6 в Project- > щелкните правой кнопкой мыши- > properties- > Java-компилятор.

Ответ 3

В eslipse могут использоваться разные версии компиляторов.

См. конфигурацию в eclipse Preference- > Java- > Compiler "Уровень соответствия компилятора". Вы должны выбрать "1.6".

Ответ 4

Я только что обнаружил, что при использовании 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>

Ответ 5

Итак, у меня была эта проблема, и несколько раз я пропустил эти решения, увидев, что моя версия Java была установлена ​​на 1.7 полностью вниз, а не на использование Maven, и поэтому просто уходит и перезапускает Eclipse пару раз, как предположил @jdowdell, после чего он, похоже, работал до следующего раза, когда я осуществил один из них. Я понял, что когда я снова запускал Eclipse, мне предлагалось сохранить мои файлы, и я понял, что мои интерфейсы не были сохранены, поэтому оригинальный метод, который перегружен, не существует на диске. И вот почему выключение и перезапуск Eclipse устраняет проблему.

tl; dr: убедитесь, что все ваши файлы сохранены.

Ответ 6

Похоже, что ваши сигнатуры методов не совпадают. Они должны быть одинаковыми, включая такие вещи, как брошенные проверенные исключения. Отправьте свой код!

Ответ 7

Проверьте библиотеку времени выполнения, настройки компилятора, вероятно, отличаются

Щелкните правой кнопкой мыши имя проекта, свойства, путь сборки Java, библиотеки

Посмотрите на версию JRE System Library, более вероятно, что она установлена ​​в 1.5 или ниже. Выберите библиотеку JRE System, затем нажмите "Удалить". Нажмите "Добавить библиотеку", выберите "Системная библиотека JRE", "Далее" Затем либо Workspace Default, либо

Ответ 8

У меня была такая же проблема около часа, и тогда она, казалось, загадочно решала себя. Хотел бы я знать, что я сделал. Я начал с настроек рабочей области, установленных для 1.6, нечаянно настроив настройки проекта на 1.5 совместимости. Я обнаружил это и изменил параметры компилятора проекта на 1.6, что позволило устранить некоторые ошибки, но не проблему @Override для интерфейсов. Некоторая комбинация из следующих исправлена:

  • Изменение jre обратно из jdk в jre, который был установлен специально для Eclipse (или кто-то, а не я).
  • Отключение конкретных параметров проекта в разделе компилятора, а также нажатие Reset по умолчанию, как для параметров проекта, так и для рабочего пространства для компилятора.
  • Выход из Eclipse и повторное использование его в качестве администратора (я скопировал eclipse в Program Files в Windows из .zip, а не из установщика, и я думаю, что он не может изменить свои файлы конфигурации, являющиеся дочерним элементом этой папки, без запуска администратор - но я мог бы быть мертв неправильно).

Один человек, по-видимому, решил проблему через полную деинсталляцию и переустановку всех компонентов, связанных с java/eclipse: http://p2p.wrox.com/book-beginning-android-application-development/87299-override-errors-despite-1-6-a.html