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

在使用@Override注解实现接口的类时,我在eclipse中得到了编译错误。

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

我正在使用6.0 jdk的最新版本。

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

相同的代码适用于configuration类似的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

我也面临问题,只是解决。 在Project->右键 – >属性 – > Java编译器中将“编译器符合级别”更改为1.6。

在eslipse中可以使用不同版本的编译器。

在eclipse Preference-> Java-> Compiler“Compiler compliance level”中查看配置。 你必须选择“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 Build Path,Libraries

看看JRE系统库的版本,更可能是1.5或更低。 选择JRE系统库,然后单击删除单击添加库,选择JRE系统库,然后选择工作区默认或

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

  1. 将jre从jdk更改为Eclipse自定义安装的jre(或某人,不是我)。
  2. 在编译器部分中禁用项目特定设置,并在编译器的项目和工作区设置中单击“重置为默认值”。
  3. 退出Eclipse并以管理员身份重新运行(我将eclipse从.zip而不是从安装程序复制到Windows上的Program Files;我认为它不能以管理员身份运行,而是将它的配置文件更改为该文件夹的子项。我可能是错的)。

一个家伙显然通过完全卸载并重新安装所有java / eclipse相关组件来解决这个问题: http : //p2p.wrox.com/book-beginning-android-application-development/87299-override-errors-despite-1-6 -a.html