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


134

我有一个现有项目,该项目@Override在重写接口方法而不是超类方法的方法上使用。我无法在代码中更改它,但是我希望Eclpse不再抱怨注释,因为我仍然可以使用Maven进行构建。

我将如何禁用此错误?

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


但是似乎源针对Java 6?
akarnokd

确实。Java 5是Mac支持的最新要求。
Stefan Kendall,2009年

Answers:


268

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

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

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

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


更新:

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

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


不,不会。它将产生错误消息“ javac:源发行版1.6需要目标发行版1.6”。
Michael Borgwardt 2009年

9
不,不会。它将生成一个已编译的类文件。如果您指定了-source 1.6选项,则只会产生该错误,而这对于完成这项工作不是必需的。
erickson

您知道,由于我还是手动进行构建,因此我只能将源代码级别保持为1.6。我无法获得任何混合配置的工作,这似乎是最简单的。
Stefan Kendall,2009年

@erickson -target -source降级是否也适用于1.7到1.6?stackoverflow.com/q/8869869/632951
Pacerier,2012年

这似乎不适用于1.8 JDK。-source 1.6 -target 1.5说:javac:源版本1.6需要目标版本1.6
Don Hatch

39

进行如下操作:

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

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

感谢-没有意识到每个项目也有它自己的设置
whostolemyhat

2
就我而言,我需要禁用此选项。
Muten Roshi 2014年

12

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


1
得分!您说得对,我的项目方面是覆盖全球合规性设置。谢谢!
bpawlowski14年

9

项目特定设置可能已启用。选择项目Project > Properties > Java CompileruncheckEnable 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和蚀。对我有用


7

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

Update2: 如果仅手动构建,则可以编写一个小程序,将原始项目复制到一个新程序中,从Java源代码中删除@Override批注,然后在Eclipse中单击Clean项目。


你能提供任何细节吗?
Stefan Kendall,2009年

它与erickson声明在同一页面上。
akarnokd

该项目的大小为几GB。一个简单的“副本”甚至不切实际。:/
Stefan Kendall

在这种情况下,您需要请求更改许可。或为1.5兼容源创建分支,然后手动修复Java文件。
akarnokd

1

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


1

使用Eclipse搜索和替换(除去)“ @ Override”的所有实例。然后使用“清理”重新添加非接口替代。

脚步:

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

0

我了解您的问题,请将您的jdk从您的jdk更改为大于1.5


0

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


0

即使在Windows选项卡中将编译器遵从性设置更改为1.6或1.7,然后是偏好设置,然后是Java,然后是编译器并设置了编译器遵从性,我仍然遇到这个问题。这个想法是,我们需要转到项目文件夹,右键单击Java,并将编译器合规性设置为1.6或更高。这对我有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.