每当我必须将我的项目重新导入 Eclipse 时(如果我重新安装了 Eclipse,或者更改了项目的位置),几乎所有我覆盖的方法都没有正确格式化,从而导致错误:
该方法必须覆盖超类方法
值得一提的是,无论出于何种原因,对于 Android 项目,方法参数值并不总是填充,因此我必须自己手动填充它们。例如:
list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
//These arguments have their correct names
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
}
});
最初将像这样填充:
list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
//This methods arguments were not automatically provided
public void onCreateContextMenu(ContextMenu arg1, View arg2,
ContextMenuInfo arg3) {
}
});
奇怪的是,如果我删除我的代码,并让 Eclipse 自动重新创建该方法,它使用我已经拥有的相同参数名称,所以我真的不知道问题出在哪里,除此之外它会自动格式化方法我。
不得不手动重新创建所有我重写的方法,这变得相当痛苦。如果有人能解释为什么会发生这种情况或如何解决它。我会很高兴的。
也许是由于我格式化方法的方式,这些方法在另一个方法的参数中?
Eclipse 默认使用 Java 1.5,并且您有实现接口方法的类(在 Java 1.6 中可以用 @Override
注释,但在 Java 1.5 中只能应用于覆盖超类方法的方法)。
转到您的项目/IDE 首选项并将 Java 编译器级别设置为 1.6,并确保您选择 JRE 1.6 以从 Eclipse 执行您的程序。
使用 Eclipse Galileo,您可以转到 Eclipse -> Preferences 菜单项,然后在对话框中选择 Java 和 Compiler。
现在它仍然可能显示 1.6 的编译器合规级别,但您仍然会看到这个问题。所以现在选择链接“配置项目特定设置...”,在那里你会看到项目设置为 1.5,现在将其更改为 1.6。您需要对所有受影响的项目执行此操作。
这种拜占庭式的菜单/对话框界面是 Eclipse 糟糕的 UI 设计的典型代表。
万一这发生在尝试了 alphazero 和 Paul 的方法但仍然无效的其他人身上。
对我来说,即使在执行 Project > Clean... 之后,eclipse 也会以某种方式“缓存”编译错误。
我不得不取消选中 Project > Build Automatically,然后执行 Project > Clean,然后再次构建。
此外,如有疑问,请尝试重新启动 Eclipse。这可以解决很多尴尬的、无法解释的错误。
要解决此问题,请转到您的项目属性 -> Java 编译器 -> 选择编译器合规级别为 1.6-> 应用。
保罗的回答部分对我有用。那时我仍然有一个错误。因此,除此之外,我还必须转到 Properties-> Project Facets 并将 Java 版本从 1.5 设置为 1.6。
也许这有帮助。
如果以上没有任何帮助,请确保您选择了正确的“执行环境”,而不是“备用 JRE”。
可在以下位置找到:
项目 -> 构建路径 -> 库
选择 JRE System Library
并点击 Edit...
。
如果选择了“Alternate JRE ...”,请将其更改为合适的“执行环境”,如 JavaSE-1.8 (jre1.8.0_60)
。不知道为什么,但这会解决它。
就我而言,上述解决方案均无效。
我不得不删除项目工作区中的文件:
。项目
.classpath
和文件夹:
.settings
然后我从以前工作的类似项目中复制了这些。这设法修复了我损坏的项目。
当然在尝试以前的替代方案之前不要使用这种方法!。
这是我第二次遇到这个问题。第一次根据 alphazero 的建议,它起作用了。但是在第二次我设置为 1.6 时,它在清理和重建后不能像“CACHE”一样工作。
正如 Rollin_s 所说,尝试关闭“自动构建”-> 错误仍然存在!
所以我从包资源管理器中删除了问题项目(已经设置为 1.6)并再次导入 -> 它开始重建,这次没有错误
希望这对某人有帮助
在我的情况下,当我将 Maven 项目导入 Eclipse 时发生了这个问题。为了解决这个问题,我在 pom.xml
中添加了以下内容:
<properties>
...
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
然后在项目的上下文菜单中,转到“Maven -> Update Project ...”,然后按 OK。
而已。希望这可以帮助。
修复必须覆盖超类方法错误并不难,您只需将 Java 源版本更改为 1.6,因为从 Java 1.6 开始,@Override 注释可以与接口方法一起使用。要将源版本更改为 1.6,请执行以下步骤:
选择项目,右键单击,属性选择 Java 编译器并选中复选框“启用项目特定设置”现在将编译器合规级别设置为 1.6 应用更改
就我而言,上述解决方案均无效。我必须将我的源代码签出到另一个文件夹。从 eclipse 中选择 File > Switch workSpaces > Other...,然后将代码导入新的工作区。之后它就起作用了。
当您的 maven 项目使用不同的 Compiler Compliance 级别而 Eclipse IDE 使用不同的 Compiler Compliance 级别时,就会发生这种情况。为了解决这个问题,我们需要将 Maven 项目的 Compiler Compliance 级别更改为 IDE 使用的级别。
1) 在 Eclipse IDE 中查看 Java 编译器合规性级别的使用
*) Window -> Preferences -> Compiler -> Compiler Compliance level : 1.8 (or 1.7, 1.6 ,, ect)
2) 更改 Maven 项目的 Java Compiler Compliance 级别
*)转到“项目”->“属性”->选择“Java编译器”->更改编译器合规级别:1.8(或1.7、1.6等)
现在是 2020 年——
项目>右键单击>Java编译器>编译器合规级别>将此更改为1.8 [或最新级别]
https://i.stack.imgur.com/BvGnZ.png
不定期副业成功案例分享