java - maven方法不会覆盖或实现超类型的方法 - 将项目导入Eclipse后,'必须重写超类方法'错误




android override (8)

任何时候我必须将我的项目重新导入到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自动重新创建方法,它将使用我已有的相同参数名称,所以我不知道问题出在哪里,除此之外,它自动格式化方法我。

这变得非常痛苦,不得不亲自手动重新创建所有我重写的方法。 如果任何人都可以解释为什么发生这种情况或如何解决它..我会很高兴。

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


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设计的典型代表。


修复必须重写超类方法错误并不困难,您只需要将Java源版本更改为1.6,因为从Java 1.6开始,@Override注释可以与接口方法一起使用。 要将源代码版本更改为1.6,请按以下步骤操作:

  1. 选择项目,右键单击属性
  2. 选择Java Compiler并选中复选框“启用项目特定设置”
  3. 现在编译器符合性级别为1.6
  4. 应用更改

在我的情况下,上述解决方案都不起作用。 我必须将我的源代码签出到另一个文件夹。 从eclipse中选择File> Switch workSpaces> Other ...,然后将代码导入新的工作区。 它在那之后起作用。


在我的情况下,当我将一个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。

而已。 希望这可以帮助。


如果以上任何内容都不起作用 ,请确保选择了适当的“ 执行环境 ”,而不是 “备用JRE”。

在下面找到:

项目 - >构建路径 - >库

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

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


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


转到Windows->首选项 - > Java - >编译器 - >将编译器合规性级别选择为1.6(您需要哪个版本) - > Apply-> ok。 现在它的工作。





superclass