首页 文章

'Must Override a Superclass Method'将项目导入Eclipse后出错

提问于
浏览
1155

任何时候我必须将我的项目重新导入Eclipse(如果我重新安装Eclipse,或者更改了项目的位置), almost all 我的重写方法格式不正确,导致错误 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自动重新创建该方法,它使用我已经拥有的相同参数名称,所以我真的不知道问题在哪里,除此之外它自动格式化方法我 .

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

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

11 回答

  • 4

    使用 Eclipse Galileo ,您可以转到Eclipse - > Preferences菜单项,然后在对话框中选择Java和Compiler .

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

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

  • 5

    就我而言,上述解决方案均无效 . 我必须将我的源代码签出到另一个文件夹 . 从eclipse中选择File> Switch workSpaces> Other ...然后将代码导入新工作区 . 它之后工作 .

  • 303

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

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

  • 9

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

  • 8

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

    也许这有帮助 .

  • 19

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

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

    • .project

    • .classpath

    和文件夹:

    • .settings

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

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

  • 10

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

    • 选择项目,右键单击,属性

    • 选择Java编译器并选中复选框"Enable project specific settings"

    • 现在使编译器合规性级别达到1.6

    • 应用更改

  • 1393

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

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

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

    希望这有助于某人

  • 12

    如果上述任何内容都没有帮助,请确保选择了正确的“ Execution environment ”,而不是"Alternate JRE" .

    在以下位置找到:

    项目 - >构建路径 - >库

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

    如果选择"Alternate JRE ...",请将其更改为"Execution Environment",如 JavaSE-1.8 (jre1.8.0_60) . 不知道为什么,但这会解决它 .

  • 75

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

    而已 . 希望这可以帮助 .

  • 39

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

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

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

    Also, when in doubt, try restarting Eclipse . 这可以解决许多尴尬,无法解释的错误 .

相关问题