ChatGPT解决这个技术问题 Extra ChatGPT

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

我有一个现有项目在覆盖 interface 方法而不是超类方法的方法上使用 @Override。我无法在代码中更改它,但我希望 Eclpse 停止抱怨注释,因为我仍然可以使用 Maven 构建。

我将如何禁用此错误?

注意:由于项目要求,我需要为 Java 1.5 编译。

但似乎源代码是针对 Java 6 的?
的确。 Java 5 是对 mac 支持的后期要求。

e
erickson

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

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

打开 Window > Preferences 对话框 浏览到 Java > Compiler。在那里,将“编译器合规级别”设置为 1.6。

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

更新:

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

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


不,不会的。它将产生一条错误消息“javac:源版本 1.6 需要目标版本 1.6”。
不,不会的。它将生成一个编译的类文件。如果您指定 -source 1.6 选项,它只会给出该错误,这不是使这项工作所必需的。
你知道,既然我还是手动构建的,我可以将源代码级别保留为 1.6。我无法让任何混合配置工作,这似乎最简单。
@erickson -target -source 降级是否也适用于 1.7 到 1.6? stackoverflow.com/q/8869869/632951
这似乎不适用于 1.8 JDK。 -source 1.6 -target 1.5 说:javac:源版本 1.6 需要目标版本 1.6
R
Randika Vishman

执行以下操作:

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

启用项目特定设置 - “是”

编译器合规性 - 1.6

生成的类文件和源代码兼容性 - 1.5


谢谢 - 没有意识到每个项目也有它自己的设置
就我而言,我需要禁用此选项。
g
gdoumenc

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


分数!你是对的,我的项目方面是覆盖全球合规性设置。谢谢!
c
chriz

可以启用项目特定设置。选择您的项目 Project > Properties > Java Compileruncheck 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和日食。它对我有用


a
akarnokd

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

更新 2:如果您只进行手动构建,您可以编写一个小程序,将原始项目复制到一个新项目中,从 java 源代码中去除 @Override 注释,然后在 Eclipse 中点击 Clean project。


你能提供任何细节吗?
它与埃里克森所说的在同一页上。
该项目有几个 GB 大。一个简单的“副本”甚至都不实用。 :/
在这种情况下,您需要请求更改许可。或者为 1.5 兼容源创建一个分支并手动修复 java 文件。
佚名

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


P
Peter Tseng

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

脚步:

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


G
Gen

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


I
IstaLibera

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


S
SOFe

即使从 windows 选项卡将编译器合规性设置更改为 1.6 或 1.7,然后是首选项,然后是 java,然后是编译器并设置编译器合规性,我仍然遇到这个问题。我们的想法是,我们需要进入项目文件夹,右键单击 Java 并将编译器合规性设置为 1.6 或更高版本。这对我有用。