一、must override a superclass method 错误
首先我们得知道:
@override注释在jdk1.5环境下只能用于对继承的类的方法的重写,而不能用于对实现的接口中的方法的实现,在jdk1.6环境下对于继承和实现都适用。
其次我们得知道:
maven的核心插件maven-compiler-plugin 默认指定了JDK版本和编码,maven 2默认用jdk 1.3来编译,maven 3默认用jdk 1.5,windows默认使用GBK编码,java项目经常编码为utf8,也需要在compiler插件中指出,否则中文乱码可能会出现编译错误。
如果出现must override a superclass method错误,就需要用1.6来编译了(1.6才支持对接口的注解)
所以需要指定maven-compiler-plugin插件的JDK版本,指定后
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
同时为了稳定起见修改eclipse配置window->preferences->Java->Compiler中的Compiler compliance level修改为1.7或以上。eclipse中使用maven的人都装了m2eclipse插件,在项目上右击选择maven-> Update Project Configuration,如果没有找到Update Project Configuration,直接项目右键Run as,用maven编译一下,也可以。
must override a superclass method的错误就可以得到解决。
如果还是不行,那将你的eclipse的compile改成1.6或者1.7试试(先1.6,再1.7)
二、No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 错误
mave项目的jre总是指向jre1.5,即使改了之后,update项目后也会指向1.5。加上下面的plugin就可以了
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
但是加上之后,只是把默认的jdk改成了1.7,如果还出现这个错误,就需要看eclipse的jre是不是选择的jdk中的jre(不能选择单独安装的jre)
在Eclipse中创建maven项目出现的环境警告 j2se-1.5
三、Could not transfer artifact org.apache.maven.plugins:maven-surefire-plugin:pom:2.7.1 from/to central (http://repo1.maven.org/maven2)
这个错误有可能是你的远程仓库的地址访问不了,这时就需要更改你的远程的仓库地址了,在setting.xml中的mirrors里面配置,有一次出现这个问题,我把地址改成<url>http://repo1.maven.org/maven2/</url>就可以了,让我疑问的是,maven默认就是这个远程仓库的地址(默认的https://repo.maven.apache.org/maven2会自动跳转到http://repo1.maven.org/maven2/),我只是在mirrors加上mirror,就可以了。不知道为什么?默认的远程仓库地址在lib/maven-model-builder-3.3.3.jar的pom-4.0.0.xml中查看。