@Override编译错误,实现一个接口(eclipse jdk1.6.0_23 linux)

时间:2011-02-14 18:22:27

标签: java linux eclipse compiler-errors jdk1.6

在为实现接口的类使用@Override注释时,我在eclipse中遇到编译错误。

编译器合规性级别设置为Java 6.0。

我使用的是最新版本的6.0 jdk。

错误:   “类型{classname}的方法{methodname}必须覆盖超类方法”

相同的代码可以在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 个答案:

答案 0 :(得分:14)

此功能仅在Java 6及更高版本中有效。我看到你使用jdk 1.6 。非常好。可能的原因:您正在使用-source 1.5进行编译。是这样的吗?如果是,您可以将其更改为-source 1.6吗?

答案 1 :(得分:4)

我也面临着问题并且刚刚解决了。 在Project->右键单击> properties-> Java编译器中将“编译器合规性级别”更改为1.6。

答案 2 :(得分:3)

答案 3 :(得分:3)

我刚刚发现在使用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>

答案 4 :(得分:1)

所以,我一直遇到这个问题,经过几次上述解决方案后,看到我的Java版本一直设置为1.7,而不是使用Maven,所以只需退出并重新启动Eclipse一对@jdowdell建议的时间,之后,它似乎工作,直到我下次实施其中之一。我意识到,当我重新启动Eclipse时,它提示我保存我的文件,并且我意识到我的接口没有被保存,因此原始方法,即被覆盖的方法,在磁盘上不存在。这就是为什么退出并重新启动Eclipse可以解决问题的原因。

tl; dr:检查所有文件是否已保存。

答案 5 :(得分:0)

听起来您的方法签名不匹配。它们必须相同,包括抛出已检查的异常等内容。发布你的代码!

答案 6 :(得分:0)

检查运行时库, 编译器设置可能不同

右键单击项目名称,属性,Java Build Path,Libraries

查看JRE系统库的版本,很可能将其设置为1.5或更低。 选择JRE System库,然后单击“删除” 单击Add Library,选择JRE System Library,Next 然后是工作区默认值或

答案 7 :(得分:0)

我有同样的问题大约一个小时,然后它似乎神秘地解决了自己。我希望我知道我做了什么。我开始将工作区设置设置为1.6,无意中将项目设置设置为1.5兼容性。我发现了这一点并将项目编译器设置更改为1.6,这解决了一些错误,但没有解决接口的@Override问题。下面的一些组合修复了它:

  1. 将jrek从jdk更改为Eclipse自定义安装的jre(或某人,不是我)。
  2. 在编译器部分中禁用项目特定设置,并在编译器的项目和工作区设置上单击“重置为默认值”。
  3. 退出Eclipse并以管理员身份重新运行(我从.zip中将eclipse复制到Windows上的Program Files中,而不是从安装程序中复制;我认为它不能将其配置文件更改为该文件夹的子文件而不作为管理员 - 但我可能是错的。)
  4. 一位研究员通过完全卸载并重新安装所有与java / eclipse相关的组件显然解决了这个问题:http://p2p.wrox.com/book-beginning-android-application-development/87299-override-errors-despite-1-6-a.html