每当我必须重新导入我的项目到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执行程序。

其他回答

以我为例,当我将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”。

就是这样。希望这能有所帮助。

在我的情况下,上面的解决方案都不起作用。我必须将源代码签入另一个文件夹。从eclipse中选择文件>切换工作空间>其他…然后将代码导入到新的工作区。之后就可以了。

Eclipse默认使用Java 1.5,并且有实现接口方法的类(在Java 1.6中可以使用@Override进行注释,但在Java 1.5中只能应用于覆盖超类方法的方法)。

转到项目/IDE首选项,将Java编译器级别设置为1.6,并确保选择JRE 1.6从Eclipse执行程序。

现在是2020年

项目>右键单击>Java编译器>编译器遵从级别>将此更改为1.8[或最新级别]

当您的maven项目使用不同的编译器遵从级别,而Eclipse IDE使用不同的编译器遵从级别时,就会发生这种情况。为了解决这个问题,我们需要将Maven项目的编译器遵从级别更改为IDE使用的级别。

1)查看Java编译器在Eclipse IDE中的遵从级别

*)窗口->首选项->编译器->编译器合规级别:1.8(或1.7,1.6,等)

2)更改Maven项目的Java编译器遵从级别

*)转到“项目”->“属性”->选择“Java编译器”->更改编译器遵从级别:1.8(或1.7,1.6,等)