我有几个这样的覆盖方法:
@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文件中的依赖项包含在内,或者这是一个完全不同的问题?
非常感谢。
答案 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)
是唯一可以覆盖的方法。
请检查:
执行mvn -V
以查看java maven用于编译的版本。
此致
答案 2 :(得分:2)
感谢大家的评论,很多人都说Maven默认使用Java 5并且可能是问题的原因,因此,我能够通过这个答案确定问题:
Why is javac failing on @Override annotation
默认情况下,JDK编译器的合规性级别设置为1.5;一旦我将其设置为1.6,错误就被删除了。
非常感谢。