@Override无法在Maven项目中工作

时间:2014-06-10 08:49:18

标签: java eclipse maven

我有几个这样的覆盖方法:

@Override
public int compareTo(Property p) {
    return getText().compareTo(p.getText());
}

作为Java项目,它工作正常,但作为Maven项目,它返回以下错误:

The method compareTo(Property) of type Property must override a superclass method

在研究完之后,我想我想把我的JRE系统库(jdk1.6_u25)作为我的POM文件中的依赖项包含在内,或者这是一个完全不同的问题?

非常感谢。

3 个答案:

答案 0 :(得分:6)

你不需要另一种依赖。但默认情况下,maven使用Java 5语言级别,其中@Override不允许实现接口方法。这是在6中引入的。

因此,您必须将编译器插件配置为使用语言级别6,如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                 <source>1.6</source>
                 <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>

答案 1 :(得分:3)

compareTo是一种通用方法。不使用泛型,因此compareTo(Object)是唯一可以覆盖的方法。

请检查:

  1. Maven使用java编译支持泛型。
  2. 来源级别&gt; = 5。
  3. 执行mvn -V以查看java maven用于编译的版本。

    此致

答案 2 :(得分:2)

感谢大家的评论,很多人都说Maven默认使用Java 5并且可能是问题的原因,因此,我能够通过这个答案确定问题:

Why is javac failing on @Override annotation

默认情况下,JDK编译器的合规性级别设置为1.5;一旦我将其设置为1.6,错误就被删除了。

非常感谢。