项目导入Eclispe时出错 ‘Must override a superclass method’ | Java Debug 笔记

本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看<活动链接>

此文章为stackoverflow问题翻译,原问题:stackoverflow.com/questions/1…

问题概述

不论何时(例如我重新安装了Eclipse,又或者是我改变了项目文件路径)在我需要将我的项目重新导入到Eclipse中,几乎所有我重写过的方法都会报错,错误提示为:

The method must override a superclass method
复制代码

image.png

值得一提的是,这都是在Android项目中出现的问题,而且自动导入方法时,参数名称并不总是填充正确的,因此我必须自己手动填充它们。例如:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //这些参数的名称是正确的
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});
复制代码

一开始将会自动填充为:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //这些参数的名称是正确的
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});
复制代码

奇怪的是,如果我移除了我的代码,并且用Eclipse自动创建方法的话,他会用同样的命名方式填充参数名称。所以除了Eclipse会自动为我格式化方法,我不太懂问题在哪。

最高赞回答

Eclipse默认使用Java 1.5并且你的类正实现某一接口(在Java 1.6中可以用@Override,但在Java 1.5中该标签只能用在已经重写了父类方法的方法上)。

去Eclipse顶部菜单栏 Project/IDE Preferences
中,并且设置Java Compilerlevel1.6,同时需要保证选择了JRE 1.6来运行你的代码。

其他解答

1.

在Eclipse Galileo版本下,你可以去Eclipse -> Preferences 菜单栏, 然后选择Java and Compiler。
现在可能显示你的编辑器版本遵循1.6,但你依旧看到这样的错误。所以现在点击Configure Project Specific Settings…”在这里你将看到项目被设置为1.5,现在改为1.6。你可能需要将所有受影响的项目做如此改动。

2.

如果尝试了上面两个回答的方法,依旧有问题的话,下面的办法可能会有帮助。

对我来说Eclipse不知为何“缓存”了编译错误,即使在点击了 Project>Clean,缓存仍然没有小时。我只好取消 Project>Build Automatically选项,之后再点击Project>Clean,之后再次bulid。

当然,如果还不好使,就重启一下Eclipse,再尝试一下。这样可以解决大多数尴尬又难以解释的错误!

总 结

总的来说就是因为Eclipse默认Java环境是1.5。导致@Override注释出错。选好环境版本,并清空编译错误缓存即可!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享