为什么 Eclipse 会抱怨接口方法上的 @Override?
我有一个现有项目,它在重写接口方法而不是超类方法的方法上使用@Override。 我无法在代码中更改这一点,但我希望 Eclpse 停止抱怨注释,因为我仍然可以使用 Maven 进行构建。
我该如何禁用此错误?
注意:由于项目需要,我需要针对Java 1.5进行编译。
I have an existing project that uses @Override
on methods that override interface methods, rather than superclass methods. I cannot alter this in code, but I would like Eclpse to stop complaining about the annotation, as I can still build with Maven.
How would I go about disabling this error?
Note: Due to project requirements, I need to compile for Java 1.5.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
在实现接口声明的方法上使用 @Override 注释仅从 Java 6 开始有效。 这是 Java 5 中的错误。
请确保您的 IDE 项目设置为使用 Java 6 JRE,并且“源兼容性”设置为 1.6 或更高版本:
请记住,Eclipse 可以覆盖特定项目的这些全局设置,因此也请检查这些设置。
更新:
Java 5 下的错误不仅仅存在于 Eclipse 中;还存在于 Eclipse 中。 直接从命令行使用 javac 会产生相同的错误。 这不是有效的 Java 5 源代码。
但是,您可以为 JDK 6 的
javac
指定-target 1.5
选项,这将生成 Java Java 6 源代码中的 5 版本类文件。Using the
@Override
annotation on methods that implement those declared by an interface is only valid from Java 6 onward. It's an error in Java 5.Make sure that your IDE projects are setup to use a Java 6 JRE, and that the "source compatibility" is set to 1.6 or greater:
Remember that Eclipse can override these global settings for a specific project, so check those too.
Update:
The error under Java 5 isn't just with Eclipse; using
javac
directly from the command line will give you the same error. It is not valid Java 5 source code.However, you can specify the
-target 1.5
option to JDK 6'sjavac
, which will produce a Java 5 version class file from the Java 6 source code.操作如下:
项目-> 属性-> java编译器->
Do as follows:
Project -> Properties -> java compiler ->
还要检查项目是否有方面。 java 版本可能会被覆盖。
Check also if the project has facet. The java version may be overriden there.
可以启用项目特定设置。 选择您的项目
Project > 属性> Java 编译器
,取消选中
启用项目特定设置
或更改Jdk 1.6
及更高版本,不要忘记相应的JRE.
如果它不起作用,请从 Eclipse 中删除您的项目,删除
.settings 文件夹
、.project
、.classpath
文件。清理并构建项目,将其导入回 Eclipse,然后重置 Java 编译器。 清理并构建您的项目和 Eclipse。 这对我有用
Project specific settings may be enabled. Select your project
Project > Properties > Java Compiler
,uncheck
theEnable project specific settings
or changeJdk 1.6
and above not forgetting the correspondingJRE
.Incase it does not work, remove your project from eclipse, delete
.settings folders
,.project
,.classpath
files.clean and build the project, import it back into eclipse and then reset your Java compiler. Clean and build your project
and eclipse. It worked for me您可以更改编译器设置以接受 Java 6 语法但生成 Java 5 输出(据我记得)。 如果运行时需要,请将“生成的类文件兼容性”设置得低一些。
更新:我检查了 Eclipse,但如果我将源兼容性设置为 1.6,类兼容性设置为 1.5,它会抱怨。 如果不允许 1.6,我通常会手动注释掉源代码中的有问题的 @Override 注释(这对您的情况没有帮助)。
更新2:
如果您只进行手动构建,则可以编写一个小程序,将原始项目复制到新项目中,从 java 源代码中删除 @Override 注释,然后只需在 Eclipse 中点击 Clean project 即可。
You could change the compiler settings to accept Java 6 syntax but generate Java 5 output (as I remember). And set the "Generated class files compatibility" a bit lower if needed by your runtime.
Update: I checked Eclipse, but it complains if I set source compatibility to 1.6 and class compatibility to 1.5. If 1.6 is not allowed I usually manually comment out the offending @Override annotations in the source (which doesn't help your case).
Update2:
If you do only manual build, you could write a small program which copies the original project into a new one, strips @Override annotations from the java sources and you just hit Clean project in Eclipse.
您还可以尝试使用 Retroweaver 从 Java6 类创建 Java5 版本。
You can also try Retroweaver to create the Java5 version from Java6 classes.
使用 Eclipse 搜索并替换(删除)“@Override”的所有实例。 然后使用“清理”重新添加非接口覆盖。
步骤:
Use Eclipse to search and replace (remove) all instances of "@Override". Then add back the non-interface overrides using "Clean Up".
Steps:
我明白你的问题,将你的jdk从你的jdk更改为大于1.5
I understood your problem, change your jdk from your jdk to greaterthan 1.5
通过将 IDE 项目配置为使用 Java 6 JRE 或更高版本,有时并不能消除 eclipse 错误。 对我来说,重新启动 Eclipe IDE 有帮助。
By configuring that the IDE projects are setup to use a Java 6 JRE or above sometimes does not remove the eclipse error. For me a restart of the Eclipe IDE helped.
即使将编译器合规性设置从 1.6 或 1.7 更改为
windows选项卡,然后是首选项,然后是java,然后是编译器并设置
编译器合规性,我仍然遇到这个问题。 我们的想法是
需要进入项目文件夹,右键单击Java并设置编译器
符合 1.6 或更高标准。 这对我有用。
Even after changing the compiler compliance setting to 1.6 or 1.7 from
windows tab, then prefernces, then java, then compiler and setting the
compiler compliance, I was still having this issue. The idea is that we
need to go the the project folder, right click, Java and set compiler
compliance to 1.6 or higer. This worked for me.