题 将项目导入Eclipse后,“必须覆盖超类方法”错误


任何时候我必须将我的项目重新导入Eclipse(如果我重新安装了Eclipse,或者改变了项目的位置), 几乎全部 我的重写方法未正确格式化,导致错误 The method must override a superclass method

可能值得注意的是,这与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自动重新创建该方法,它使用我已经拥有的相同参数名称,所以我真的不知道问题在哪里,除此之外它自动格式化方法我。

这需要手动重新创建所有重写的方法,这变得非常痛苦。如果有人能解释为什么会发生这种情况或如何解决它......我会非常高兴。

也许这是由于我格式化方法的方式,这是在另一个方法的参数内?


1127
2017-11-05 03:17


起源


请检查此项,它解释了覆盖的使用。我相信这种做法对于所有事情都非常重要,不仅仅是因为这种情况。 stackoverflow.com/questions/94361/... - oagostinho


答案:


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

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


1383
2017-11-05 03:33



我的项目设置为1.6,所以我为星星拍摄并将其设置为1.5,重建,然后再回到1.6。奇迹般地解决了我的问题。谢谢你指点我正确的方向! - Michael Krauklis
有同样的问题...尝试了这个答案给出的建议,但仍然没有成功。 :( :( - aditya_gaur
@MichaelKrauklis我是1.6,我遇到了这个问题。我已经设置为1.5并清理它并重新设置为1.6并再次清理它。还是没有解决。有任何想法吗? - Pacerier
同样的问题,在我的情况下,我没有安装JDK 1.6,只有最新的1.7,这显然不适用于Android。安装旧的1.6,然后按照这些说明,应该工作:) - NoBugs
应该提到(就像在对其他答案的评论中一样),通常需要一个干净的构建,然后重新启动。 - gsingh2011


Eclipse Galileo 进入Eclipse - > Preferences菜单项,然后在对话框中选择Java和Compiler。

现在它仍然可以显示1.6的编译器合规性级别,但你仍然看到这个问题。所以现在选择链接“配置项目特定设置...“在那里,你会看到项目设置为1.5,现在将其更改为1.6。您需要为所有受影响的项目执行此操作。

这个拜占庭菜单/对话框界面是Eclipse糟糕的UI设计的典型特征。


301
2017-09-08 03:48





如果其他人尝试使用alphazero和Paul的方法,但仍然无法正常工作。

对我来说,即使在做了一个Project> Clean之后,eclipse仍以某种方式'缓存'了编译错误......

我必须取消选中Project> Build Automatically,然后执行Project> Clean,然后再次构建。

此外,如有疑问,请尝试重新启动Eclipse。这可以解决许多尴尬,无法解释的错误。


74
2018-01-26 17:22



我不仅仅是那个,而是在Clean对话框中取消选中“自动启动构建”。只有这样才对我有用。 - Wilerson
即使在删除错误之后,我也必须重新启动eclipse。 - Dave Cameron
我对Eclipse Luna遇到了同样的问题并修复了它。 - Ted Hopp


要解决此问题,请转到项目属性 - > Java编译器 - >选择编译器合规性级别到1.6->应用。


38
2017-12-26 09:38





保罗的答案部分地为我工作。那时我还有一个错误。因此,除此之外,我还必须转到Properties-> Project Facets,并将Java版本设置为1.5到1.6。

也许这有帮助。


18
2018-02-05 16:25





在我的案例中,上述解决方案都没有起作用。

我不得不删除Project工作区中的文件:

  • 。项目
  • 的.classpath

和文件夹:

  • .settings

然后我复制了以前工作的类似项目中的那些。这设法修复了我破碎的项目。

当然在尝试以前的替代方案之前不要使用这种方法!


11
2017-12-28 20:31



在此之前,尝试重启eclipse。 (为我工作) - Dileep


如果以上都没有帮助,请确保你有一个合适的“执行环境“选中,并且  一个“替代JRE”。

在以下位置找到:

项目 - >构建路径 - >库

选择 JRE System Library 并单击 Edit...

如果选择“Alternate JRE ...”,请将其更改为适合的“执行环境” JavaSE-1.8 (jre1.8.0_60)。不知道为什么,但这会解决它。


9
2017-09-04 21:44



我选择了一个“执行环境”,然后按下确定,错误消失了。然后我回到同一个对话框,选择“Workspace default JRE(...)”,这是我之前选择的,当我从Eclipse收到错误,然后按OK,错误没有发生?!?这必须是Eclipse UI bug或类似的东西(我在Eclipse Neon 4.6.2上) - mljrg


这是我第二次遇到这个问题。 第一次根据alphazero的推荐它起作用了。 但是在第二次我设置为1.6时它不能像'CACHE'那样在清理和重建后出现这个错误。

尝试关闭'自动构建',因为Rollin_s说 - >错误仍在这里!

所以我从Package Explorer中删除了问题项目(已经设置为1.6)并再次导入 - >它开始重建并且这次没有错误

希望这有助于某人


8
2017-12-14 06:20





转到windows-> preferences - > Java - > compiler - >选择编译器合规性级别为1.6(您想要的版本) - > Apply-> ok。现在它的工作。


7
2017-12-08 09:46