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

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

如何禁用这个错误?

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

105299 次浏览

对实现接口声明的方法使用 @Override注释只能从 Java6开始有效。这是 Java5中的一个错误。

确保您的 IDE 项目设置为使用 Java 6 JRE,并且“源代码兼容性”设置为1.6或更高:

  1. 打开“窗口 > 首选项”对话框
  2. 浏览至 Java > 编译器。
  3. 在那里,将“编译器遵从级别”设置为1.6。

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


更新:

Java5下的错误不仅仅发生在 Eclipse 上; 直接从命令行使用 javac也会产生同样的错误。它不是有效的 Java5源代码。

但是,您可以为 JDK6的 javac指定 -target 1.5选项,它将从 Java6源代码生成 Java5版本的类文件。

您可以更改编译器设置以接受 Java6语法,但是生成 Java5输出(我记得)。如果运行时需要,则将“生成的类文件兼容性”设置得稍低一些。 更新 : 我检查了 Eclipse,但是如果我将源兼容性设置为1.6,将类兼容性设置为1.5,它就会抱怨。如果不允许使用1.6,我通常会手动注释掉源代码中令人不快的@Override 注释(这对您的情况没有帮助)。

如果只进行手动构建,那么可以编写一个小程序,将原始项目复制到新的项目中,从 Java 源代码中删除@Override 注释,然后在 Eclipse 中单击 Clean project。

您还可以尝试 Retroweaver 从 Java6类创建 Java5版本。

按以下步骤行事:

项目-> 属性-> java 编译器->

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

还要检查项目是否有 facet。 Java 版本可能在那里被覆盖。

使用 Eclipse 搜索并替换(删除)“@Override”的所有实例,然后使用“ Clean Up”添加回非接口覆盖。

步骤:

  1. 选择包含源文件的项目或文件夹。
  2. 转到“ Search > Search...”(Ctrl-H)打开 Search 对话框。
  3. 转到“文件搜索”选项卡。
  4. 在「包含文字」中输入「@Override 」及「 * 」。“文件名模式”中的。单击“替换...”,然后单击“确定”,以删除“@Override”的所有实例。
  5. 点击“窗口 > 首选项 > Java > 代码样式 > 清理”,创建一个新的配置文件。
  6. 编辑配置文件,除了“丢失的代码 > 添加丢失的注释 >@Override”,取消选中所有内容。确保未选中“接口方法的实现”。
  7. 选择包含源文件的项目或文件夹。
  8. 选择“ Source > Clean Up...”(Alt + Shift + s,然后 u) ,然后选择“ Finish”,重新添加非接口覆盖。

可以启用项目特定设置。选择您的项目 Project > Properties > Java CompileruncheckEnable 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和日食。这招对我很管用

我明白你的问题,把你的 JDK 从你的 JDK 改成大于1.5

通过将 IDE 项目设置为使用 Java6JRE 或更高版本,有时并不能消除 Eclipse 错误。对我来说,Eclipse IDE 的 重新开始帮助了我。

即使将编译器遵从性设置更改为1.6或1.7 窗口选项卡,然后是首选项,然后是 Java,然后是编译器并设置 编译器遵从性,我仍然有这个问题 需要去的项目文件夹,右键单击,Java 和设置编译器 服从性达到1.6或更高,这对我很有效。