我有一个现有的项目,它使用@Override
覆盖 interface 方法的方法,而不是超类方法。我无法在代码中改变这一点,但我希望Eclpse停止抱怨注释,因为我仍然可以使用Maven构建。
我如何禁用此错误?
注意:由于项目要求,我需要编译Java 1.5。
答案 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 Compiler
,uncheck
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”的所有实例。然后使用“清理”添加回非界面覆盖。
步骤:
答案 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或更高。这对我有用。