Java @重写编译错误,实现接口(eclipse jdk1.6.0_23 linux)
当对实现接口的类使用@Override注释时,我在eclipse中遇到编译错误 编译器符合性级别设置为Java 6.0 我使用的是6.0 jdk的最新版本 错误: “类型为{classname}的方法{methodname}必须重写超类方法” 同样的代码在配置类似的mac上也能正常工作Java @重写编译错误,实现接口(eclipse jdk1.6.0_23 linux),java,linux,eclipse,compiler-errors,jdk1.6,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 canSendBroadca
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及更高版本中有效。我看到您正在使用JDK1.6。那很好。可能原因:您正在使用
-source 1.5
进行编译。是这样吗?如果是这样,能否将其更改为-source 1.6
?在eslipse中可以使用不同版本的编译器
请参阅eclipse首选项->Java->编译器“编译器符合性级别”中的配置。
您必须选择“1.6”。检查运行库,
编译器设置可能不同
右键单击项目名称、属性、Java构建路径、库
看看JRE系统库的版本,很可能设置为1.5或更低。
选择JRE系统库,然后单击删除
单击添加库,选择JRE系统库,然后单击下一步
然后要么是工作区默认值,要么是我刚刚发现,在使用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>
org.apache.maven.plugins
maven编译器插件
真的
1.6
1.6
我有同样的问题大约一个小时,然后它似乎神秘地自行解决了。我希望我知道我做了什么。我从工作区设置设置为1.6开始,无意中将项目设置设置为1.5兼容。我发现了这一点,并将项目编译器设置更改为1.6,这解决了一些错误,但没有解决接口的@Override问题。以下各项的某些组合修复了此问题:
一位同事显然通过完全卸载和重新安装所有java/eclipse相关组件解决了这个问题:所以,我一直有这个问题,在多次运行上述解决方案之后,看到我的java版本一直设置为1.7,而不是使用Maven,正如@jdowdell所建议的那样,退出并重新启动Eclipse几次之后,它似乎就可以工作了,直到下一次我实现其中一个。我意识到当我重新启动Eclipse时,它会提示我保存文件,我意识到我的接口没有保存,所以原来的方法(被重写的方法)在磁盘上不存在。这就是为什么退出并重新启动Eclipse可以解决这个问题
tl;dr:检查您的所有文件是否已保存。我也面临问题,刚刚解决。
在Project->right click->properties->Java Compiler中将“Compiler compliance level”更改为1.6。您得到的完整编译错误是什么?只是猜测一下。也许您只检查了工作区编译器的符合性级别(设置为6),但您的项目将其自身设置为jdk5。@Progman-编辑问题以包含错误string@GrzegorzOledzki-很好的建议。此项目继承了工作区默认设置(6)您使用的是Eclipse3.7里程碑还是夜间构建?可能这是最新eclipse中的回归。添加了代码示例。注意:代码在其他配置中编译良好。我认为这与我在linux中运行的jdk版本有关,或者与我的linux eclipse配置有关,我只是没有看到。我想你是对的,但是我在eclipse中应该在哪里检查这一点呢?eclipse中的编译器遵从性级别已经为eclipse设置为6.0(1.6):在project->Properties…>Java编译器,然后根据需要进行配置