在Java8中删除@Override注释错误

时间:2017-03-26 06:07:57

标签: java compiler-errors annotations javacompiler java-annotations

我使用单个方法创建了以下界面:

public interface Greeting {

   public void perform();
}

我试图将接口的实例传递给greet()方法。

public class Greeter {

  public void greet(Greeting greeting){
    greeting.perform();
 }

 public static void main(String[] args) {       
    Greeter greeter=new Greeter();
 }
}

我创建了Greeting Interface的实现:

public class HelloWorldGreeting implements Greeting {

 @Override
 public void perform() {
    System.out.println("Hello World");

 }
}

我收到错误(HelloWorldGreeting类型的方法perform()必须覆盖或实现超类型方法),快速修复为“Remove @Override annotation”

我还检查了编译器配置。它只有1.8。

enter image description here

请让我知道为什么会出现错误或帮助我解决问题。提前谢谢。

6 个答案:

答案 0 :(得分:4)

  

请让我知道为什么会出现错误或帮我解决?

当没有生成最新的类文件时会发生这种情况,即覆盖方法签名不匹配,因为类文件仍然是指旧文件。因此,请确保正确构建项目并生成最新的类文件。

在eclipse中,项目(在顶部栏) - >清理并检查是否正在生成最新的类文件(在project/target/classes文件夹或您配置的任何其他文件夹中)。另外,请确保项目中没有其他错误可能会阻止生成类文件。您还可以查看here关于无法构建项目的原因。

答案 1 :(得分:2)

您在Java Build Path"上使用了执行环境中的合规性。选中复选框。您需要确保在Build Path定义中选择了1.8 JRE。 1.5 JRE会产生此错误。

答案 2 :(得分:1)

看起来您的IDE Eclipse在其Java Build Path中配置了1.6之前的JRE系统库。要解决此问题,您需要配置Workspace默认JRE(JDK1.8.0_xx)的系统库,而不是1.5。要做到这一点,你应该转到你的

项目>构建路径>配置构建路径> Java构建路径> “库”选项卡

在此处,验证JRE系统库。很可能这将是1.5,因为这个错误发生了。 现在,单击“添加库” 选择图书馆类型 - > JRE系统库 - >下一步

选择Workspace默认JRE(jdk 1.8.0_xx),假设您已经安装了它。否则,请在系统上选择其他已安装的jre。 单击完成。 enter image description here 您的JRE 1.8应添加到JRE系统库中。 现在从构建路径中删除JRE 1.5,然后单击Apply。 检查您的Java编译器JDK合规性级别是否仍为1.8,然后执行干净的构建。这应该可以解决问题。

答案 3 :(得分:0)

我遇到了类似的问题,尝试了这里提到的所有解决方案,但没有任何问题对我有用。最后,我通过将JRE System Library选项更改为指向Alternate JRE的{​​{1}}来解决了此错误。

谢谢!

version error

答案 4 :(得分:0)

右键单击项目->验证

然后选择要validate的文件。

对我有用。

答案 5 :(得分:0)

选择出现错误的文件,右键单击它以进行验证