为什么Eclipse会在接口方法上抱怨@Override?

Ste*_*all 132 java eclipse annotations interface syntax-error

我有一个现有的项目,它使用@Override覆盖接口方法的方法,而不是超类方法.我不能在代码中改变这一点,但我想Eclpse停止抱怨的注解,因为我仍然可以使用Maven构建.

我该如何禁用此错误?

注意:由于项目要求,我需要编译Java 1.5.

eri*_*son 266

@Override在实现接口声明的方法的方法上使用注释仅从Java 6开始有效.这是Java 5中的错误.

确保您的IDE项目设置为使用Java 6 JRE,并且"源兼容性"设置为1.6或更高.打开Window> Preferences对话框,然后浏览到Java> Compiler.在那里,您可以将"编译器合规性级别"设置为1.6.

请记住,Eclipse可以覆盖特定项目的这些全局设置,因此请检查这些设置.


更新:

Java 5下的错误不仅仅是Eclipse; javac直接从命令行使用会给你同样的错误.它不是有效的Java 5源代码.

但是,您可以指定-target 1.5JDK 6的选项javac,它将从Java 6源代码生成Java 5版本类文件.

  • 不,它不会.它将生成一个已编译的类文件.如果指定-source 1.6选项,它只会给出该错误,这对于使其工作不是必需的. (9认同)

小智 37

Project-> Properties-> java compiler->

启用项目特定设置 - 是编译器合规性 - 1.6生成的类文件和源兼容性 - 1.5

  • 在我的情况下,我需要禁用此选项. (2认同)

gdo*_*enc 12

检查项目是否有方面.可以在那里覆盖java版本.


小智 9

可以启用项目特定设置.选择项目Project > Properties > Java Compiler,uncheckEnable project specific settings或更改Jdk 1.6及以上不忘对应JRE.
柜面它不工作,从日食删除您的项目,删除.settings folders,.project,.classpath文件.clean and build the project, import it back into eclipse and then reset your Java compiler. Clean and build your project和日食.它对我有用


aka*_*okd 7

您可以更改编译器设置以接受Java 6语法,但生成Java 5输出(我记得).如果运行时需要,请将"生成的类文件兼容性"设置得稍低一些. 更新:我检查了Eclipse,但是如果我将源兼容性设置为1.6并且类兼容性为1.5,则会产生抱怨.如果不允许1.6,我通常会手动注释掉源中有问题的@Override注释(这对你的情况没有帮助).

Update2: 如果你只进行手动构建,你可以编写一个小程序,将原始项目复制到一个新项目中,从java源中删除@Override注释,然后点击Eclipse中的Clean项目.