将项目导入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自动重新创build方法,它使用我已经有的相同的参数名称,所以我真的不知道问题在哪里,除此之外它自动格式化方法我。
这成为一个非常痛苦的手动重新创build所有我重写的方法。 如果任何人都可以解释为什么发生这种情况或如何解决这个问题..我会很高兴。
也许这是由于我格式化的方法,这是在另一种方法的论点内?
Eclipse缺省为Java 1.5,而且您有实现接口方法的类(在Java 1.6中可以使用@Override
进行注释,但在Java 1.5中只能应用于覆盖超类方法的方法)。
转到您的项目/ IDE首选项,并将Java编译器级别设置为1.6,并确保selectJRE 1.6从Eclipse执行程序。
使用Eclipse Galileo进入Eclipse – > Preferences菜单项,然后在对话框中selectJava和Compiler。
现在它仍然可以显示1.6的编译器合规性水平,但你仍然看到这个问题。 所以现在select“ configuration项目特定设置… ”的链接,在那里你会看到项目设置为1.5,现在将其更改为1.6。 您需要为所有受影响的项目执行此操作。
这个拜占庭菜单/对话框界面是Eclipse糟糕的UIdevise的典型代表。
如果这种情况发生在任何其他尝试阿尔法零和保罗的方法,仍然没有工作的人。
对我来说,甚至在执行一个Project> Clean …之后,eclipse会以某种方式“caching”编译错误。
我必须取消选中Project> Build Automatically,然后执行Project> Clean,然后重新编译。
另外,如果有疑问,请尝试重新启动Eclipse 。 这可以解决很多尴尬,无法解释的错误。
要解决此问题,请转至您的项目属性 – > Java编译器 – >select编译器合规性级别为1.6-> Apply。
保罗的答案部分地为我工作。 那么我仍然有一个错误。 所以,除此之外,我还必须去Properties-> Project Facets,并将Java版本从1.5设置为1.6。
也许这有帮助。
在我的情况下,上述解决scheme都没有奏效。
我不得不删除项目工作区中的文件:
- 。项目
- 的.classpath
和文件夹:
- .settings
然后我复制了以前工作过的类似项目。 这设法解决了我的破碎的项目。
在尝试以前的替代方法之前,当然不要使用这个方法!
这是我第二次遇到这个问题。 第一次根据alphazero的推荐它的工作。 但在第二次我设置为1.6它不工作,就像清理和重build后的“CACHE”这个错误。
尝试closures“自动生成”Rollin_s说 – >错误仍然在这里!
所以我从包资源pipe理器中删除了问题项目(已经设置为1.6),并再次导入 – >这次开始重build,没有错误
希望这可以帮助别人
如果上述内容没有任何帮助,请确保您select了适当的“ 执行环境 ”,而不是 “备用JRE”。
在下面find:
项目 – >构buildpath – >库
selectJRE System Library
,然后单击Edit...
如果select“Alternate JRE …”,则将其更改为类似JavaSE-1.8 (jre1.8.0_60)
的适合的“执行环境”。 不知道为什么,但这会解决它。
转到Windows->首选项 – > Java – >编译器 – >select编译器合规性级别为1.6(您想要哪个版本) – >应用 – >确定。 现在它的工作。
修复必须重写一个超类的方法错误并不困难,您只需要将Java源版本更改为1.6,因为从Java 1.6开始,@Override注释可以与接口方法一起使用。 要将源代码版本更改为1.6,请按以下步骤操作:
- select项目,右键单击属性
- selectJava编译器并选中checkbox“启用项目特定设置”
- 现在编译器符合性级别为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。
而已。 希望这可以帮助。
在我的情况下,没有上述解决scheme的作品。 我必须检查我的源代码到另一个文件夹。 从eclipse中selectFile> Switch workSpaces> Other …,然后将代码导入新的工作区。 它在那之后工作。