提问人:Stefan Kendall 提问时间:6/13/2009 最后编辑:AjinkyaStefan Kendall 更新时间:8/3/2019 访问量:106317
为什么 Eclipse 抱怨接口方法@Override?
Why does Eclipse complain about @Override on interface methods?
问:
我有一个现有的项目,它使用覆盖接口方法的方法,而不是超类方法。我无法在代码中更改这一点,但我希望 Eclpse 停止抱怨注释,因为我仍然可以使用 Maven 进行构建。@Override
我将如何禁用此错误?
注意:由于项目要求,我需要针对 Java 1.5 进行编译。
答:
在实现接口声明的方法上使用注解仅在 Java 6 之后有效。这是 Java 5 中的一个错误。@Override
确保您的 IDE 项目设置为使用 Java 6 JRE,并且“源代码兼容性”设置为 1.6 或更高版本:
- 打开“窗口>首选项”对话框
- 浏览到 Java > Compiler。
- 在那里,将“编译器合规级别”设置为 1.6。
请记住,Eclipse 可以覆盖特定项目的这些全局设置,因此也要检查这些设置。
更新:
Java 5 下的错误不仅与 Eclipse 有关;直接从命令行使用将出现相同的错误。它不是有效的 Java 5 源代码。javac
但是,您可以指定 JDK 6 的选项,这将从 Java 6 源代码生成 Java 5 版本类文件。-target 1.5
javac
评论
您可以更改编译器设置以接受 Java 6 语法,但生成 Java 5 输出(我记得)。如果运行时需要,请将“生成的类文件兼容性”设置得更低一些。更新:我检查了 Eclipse,但如果我将源代码兼容性设置为 1.6,将类兼容性设置为 1.5,它会抱怨。如果不允许 1.6,我通常会手动注释掉源代码中违规的@Override注释(这对您的情况没有帮助)。
更新2:如果你只做手动构建,你可以编写一个小程序,将原始项目复制到一个新项目中,从java源代码中剥离@Override注释,然后你只需在Eclipse中点击Clean项目即可。
评论
您也可以尝试使用 Retroweaver 从 Java6 类创建 Java5 版本。
操作如下:
项目 -> 属性 -> java 编译器 ->
- 启用特定于项目的设置 - “是”
- 编译器合规性 - 1.6
- 生成的类文件和源代码兼容性 - 1.5
评论
还要检查项目是否有分面。java 版本可能在那里被覆盖。
评论
使用 Eclipse 搜索和替换(删除)“@Override”的所有实例。然后使用“清理”重新添加非接口覆盖。
步骤:
- 选择包含源文件的项目或文件夹。
- 转到“搜索>搜索...”(Ctrl-H) 调出“搜索”对话框。
- 转到“文件搜索”选项卡。
- 在“包含文本”中输入“@Override”,在“文件名模式”中输入“*.java”。单击“替换...”,然后单击“确定”,以删除“@Override”的所有实例。
- 转到“Window > Preferences > Java > Code Style > Clean Up”并创建一个新的配置文件。
- 编辑配置文件,并取消选中除“缺少代码>添加缺少的注释> @Override”之外的所有内容。确保未选中“接口方法的实现”。
- 选择包含源文件的项目或文件夹。
- 选择“源>清理...”(Alt+Shift+s,然后按 u),然后“完成”以重新添加非接口覆盖。
可以启用特定于项目的设置。选择您的项目,或更改和上面不要忘记相应的.
如果它不起作用,请从 eclipse 中删除您的项目,删除 , , 文件。和日食。它对我有用Project > Properties > Java Compiler
uncheck
Enable 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
我理解你的问题,将你的 jdk 从你的 jdk 更改为大于 1.5
通过将 IDE 项目设置为使用 Java 6 JRE 或更高版本,有时并不能消除 eclipse 错误。对我来说,重新启动 Eclipe IDE 有所帮助。
即使将编译器合规性设置更改为 1.6 或 1.7 Windows 选项卡,然后是 prefernces,然后是 java,然后是编译器,并将 编译器合规性,我仍然遇到这个问题。我们的想法是,我们 需要去项目文件夹,右键,Java并设置编译器 符合 1.6 或更高版本。这对我有用。
评论