@Override ошибка компиляции, реализация интерфейса (eclipse jdk1.6.0_23 linux) - PullRequest
15 голосов
/ 14 февраля 2011

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

Ответы [ 8 ]

14 голосов
/ 14 февраля 2011

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

4 голосов
/ 07 октября 2013

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

3 голосов
/ 29 мая 2012

Я только что обнаружил, что при использовании 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>
3 голосов
/ 14 февраля 2011

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

См. Настройки в eclipse Preference-> Java-> Compiler "Уровень соответствия компилятора". Вы должны выбрать «1.6».

1 голос
/ 11 ноября 2012

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

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

0 голосов
/ 02 июня 2012

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

  1. Изменение jre обратно с jdk на jre, который Eclipse установил (или кто-то другой, не я).
  2. Отключение настроек, специфичных для проекта, в разделе компилятора, а также нажатие кнопки «Сбросить до значений по умолчанию» для настроек проекта и рабочей области для компилятора.
  3. Выход из 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

0 голосов
/ 14 марта 2012

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

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

Посмотрите версию системной библиотеки JRE, подробнеечем вероятно, он установлен на 1,5 или ниже.Выберите Системная библиотека JRE, затем нажмите «Удалить». Нажмите «Добавить библиотеку», выберите «Системная библиотека JRE», «Далее», либо «Рабочая область по умолчанию», либо

0 голосов
/ 14 февраля 2011

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

...