2011-02-14 34 views
15

我在使用@Override注解实现接口的类时,在eclipse中出现编译错误。@Override编译错误,实现一个接口(eclipse jdk1.6.0_23 linux)

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

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

错误: “类型{类名}的方法{方法名}必须重写一个超类方法”

相同的代码正常工作在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; } 
} 
+0

你得到的完整编译错误是什么? – Progman 2011-02-14 18:24:22

+12

只是一个猜测。也许您只检查了工作区编译器合规性级别(设置为6),但您的项目将其自己设置为jdk5。 – 2011-02-14 18:26:42

+0

@Progman - 编辑的问题包括错误字符串 – jsoc 2011-02-14 18:43:42

回答

0

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

14

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

3

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

请参阅eclipse首选项中的配置 - > Java-> Compiler“编译器符合性级别”。 您必须选择“1.6”。

0

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

右键点击项目名称,性质,Java构建路径,库

看JRE系统库的版本,更可能它被设置为1.5或更低。 选择JRE系统库,然后单击删除 点击添加库,选择JRE系统库,下一步 接着是被默认的工作区,或

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> 
0

我有同样的问题了大约一个小时,然后它似乎神秘地自行解决。我希望我知道我做了什么。我已经开始将工作区设置设置为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

1

所以,我一直有这个问题,并通过上述解决方案几次跑,看了之后我的Java版本设置为1.7,而不是使用Maven,所以只需按照@jdowdell的建议退出并重新启动Eclipse几次,之后,它似乎可以工作,直到下次我实现其中一个时。我意识到,当我重新启动Eclipse时,它提示我保存文件,并且我意识到我的界面还没有保存,所以最初的方法,即被覆盖的方法在磁盘上不存在。这就是退出并重新启动Eclipse修复问题的原因。

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

4

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