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

时间:2009-06-12 17:33:26

标签: java eclipse interface annotations syntax-error

我有一个现有的项目,它使用@Override覆盖 interface 方法的方法,而不是超类方法。我无法在代码中改变这一点,但我希望Eclpse停止抱怨注释,因为我仍然可以使用Maven构建。

我如何禁用此错误?

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

10 个答案:

答案 0 :(得分:263)

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

确保您的IDE项目设置为使用Java 6 JRE,并且“源兼容性”设置为1.6或更高。打开窗口>首选项对话框,并浏览到Java>编译器。在那里,您可以将“编译器合规性级别”设置为1.6。

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


更新

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

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

答案 1 :(得分:37)

Project-> Properties-> java compiler->

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

答案 2 :(得分:11)

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

答案 3 :(得分:8)

可以启用项目特定设置。选择您的项目Project > Properties > Java Compileruncheck Enable project specific settings或更改Jdk 1.6及以上,不要忘记相应的JRE
如果它不起作用,从eclipse中删除你的项目,删除.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和日食。它对我有用

答案 4 :(得分:7)

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

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

答案 5 :(得分:1)

您也可以尝试使用Retro Weaver从Java 6类创建Java版本。

答案 6 :(得分:1)

使用Eclipse搜索和替换(删除)“@Override”的所有实例。然后使用“清理”添加回非界面覆盖。

步骤:

  1. 选择包含源文件的项目或文件夹。
  2. 转到“搜索&gt;搜索...”(Ctrl-H)以显示“搜索”对话框。
  3. 转到“文件搜索”标签。
  4. 在“文件名模式”中的“包含文本”和“* .java”中输入“@Override”。单击“替换...”,然后单击“确定”,以删除“@Override”的所有实例。
  5. 转到“窗口&gt;首选项&gt; Java&gt;代码样式&gt;清理”并创建新的配置文件。
  6. 编辑个人资料,并取消选中除“缺少代码&gt;添加缺失的注释&gt; @Override”之外的所有内容。确保未选中“接口方法的实现”。
  7. 选择包含源文件的项目或文件夹。
  8. 选择“来源&gt;清理...”(Alt + Shift + s,然后是u),然后选择“完成”以添加非界面覆盖。

答案 7 :(得分:0)

我理解你的问题,将你的jdk从jdk更改为greaterthan 1.5

答案 8 :(得分:0)

通过配置IDE项目设置为使用Java 6 JRE或更高版本,有时不会删除eclipse错误。对我来说,Eclipe IDE的重启有所帮助。

答案 9 :(得分:0)

即使将编译器合规性设置更改为1.6或1.7   windows选项卡,然后是prefernces,然后java,然后编译和设置   编译器合规性,我还有这个问题。我们的想法是   需要去项目文件夹,右键单击,Java并设置编译器   符合1.6或更高。这对我有用。