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

发布于 2024-07-24 09:26:34 字数 180 浏览 10 评论 0原文

我有一个现有项目,它在重写接口方法而不是超类方法的方法上使用@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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

追风人 2024-07-31 09:26:34

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

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

  1. 打开窗口 > 首选项对话框
  2. 浏览至 Java > 编译器。
  3. 在那里,将“编译器合规级别”设置为 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:

  1. Open the Window > Preferences dialog
  2. Browse to Java > Compiler.
  3. There, set the "Compiler compliance level" to 1.6.

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's javac, which will produce a Java 5 version class file from the Java 6 source code.

剑心龙吟 2024-07-31 09:26:34

操作如下:

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

  • 启用项目特定设置 - 'yes'
  • 编译器合规性 - 1.6
  • 生成的类文件和源兼容性 - 1.5

Do as follows:

Project -> Properties -> java compiler ->

  • Enable project specific settings - 'yes'
  • Compiler compliance - 1.6
  • generated class files and source compatibility - 1.5
愿与i 2024-07-31 09:26:34

还要检查项目是否有方面。 java 版本可能会被覆盖。

Check also if the project has facet. The java version may be overriden there.

杀手六號 2024-07-31 09:26:34

可以启用项目特定设置。 选择您的项目 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 the Enable project specific settings or change Jdk 1.6 and above not forgetting the corresponding JRE.
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 projectand eclipse. It worked for me

离去的眼神 2024-07-31 09:26:34

您可以更改编译器设置以接受 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.

℡Ms空城旧梦 2024-07-31 09:26:34

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

You can also try Retroweaver to create the Java5 version from Java6 classes.

梦毁影碎の 2024-07-31 09:26:34

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

步骤:

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

Use Eclipse to search and replace (remove) all instances of "@Override". Then add back the non-interface overrides using "Clean Up".

Steps:

  1. Select the projects or folders containing your source files.
  2. Go to "Search > Search..." (Ctrl-H) to bring up the Search dialog.
  3. Go to the "File Search" tab.
  4. Enter "@Override" in "Containing text" and "*.java" in "File name patterns". Click "Replace...", then "OK", to remove all instances of "@Override".
  5. Go to "Window > Preferences > Java > Code Style > Clean Up" and create a new profile.
  6. Edit the profile, and uncheck everything except "Missing Code > Add missing Annotations > @Override". Make sure "Implementations of interface methods" is unchecked.
  7. Select the projects or folders containing your source files.
  8. Select "Source > Clean Up..." (Alt+Shift+s, then u), then "Finish" to add back the non-interface overrides.
耶耶耶 2024-07-31 09:26:34

我明白你的问题,将你的jdk从你的jdk更改为大于1.5

I understood your problem, change your jdk from your jdk to greaterthan 1.5

梦里南柯 2024-07-31 09:26:34

通过将 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.

晚雾 2024-07-31 09:26:34

即使将编译器合规性设置从 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文