Maven and the “method does not override a method from its superclass” error

Spent more time than I care to admit today stuck on something soooo simple. Was trying to build a maven project at home, and kept getting this error: “method does not override a method from its superclass”.

What is happening? Well, there is a @Override annotation on one of the methods, but it doesn’t have a superclass–it is annotating a method that is being implemented (from an interface), not a method that is inherited (from a superclass).

The @Override annotation is a Java 1.5 feature, and the error message I was getting was coming (correctly) from a 1.5 compiler. However in Java 1.6 the @Override annotation can also be applied to methods that are implemented from an interface.

Someone started using Java 6 and Java 6 features in the project, without updating the pom.xml file to fix this. Grrr.

The fix was to update the configuration of the maven-compiler-plugin to use 1.6 as both the source and the target, rather than 1.5. set my JAVA_HOME to point to Java 1.6 and that was that. I wound up putting the config for maven-compiler-plugin back to 1.5. Which doesnt seem quite right, either, but fixes the UTF-8 error I am getting. Ugh!

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.51.61.5</source>
<target>1.51.61.5</target>
<encoding>UTF8</encoding>
<optimize>true</optimize>
</configuration>
</plugin>