Maven编译错误:不兼容的类型的解决方案

泛型在实际的工作中应用非常广泛,关于泛型就不在这里赘述了,感兴趣请戳《重新认识泛型》。项目中用到了如下的泛型:

public <T> T query(String sql, ResultSetHandler<T> rsh) throws SQLException {return this.query(sql, rsh, (Object[]) null);}以上代码在Eclipse中可以编译通过并成功运行,但是当你使用Maven编译的时候就会报错,错误信息如下:xxx不兼容的类型需要:xxx找到: java.lang.ObjectEclipse编译代码时,使用的是自带的JDT(Java Development Tools),而Maven默认使用的是JAVA_HONE中的javac,而javac相对JDT的检查机制来说,更加的严格,所以导致Eclipse可以编译通过,而用Maven编译会报错的结果。

解决方案有两个:

第一个,借助Eclipse的JDT编译

点击 Eclipse –> Project –> Clean… 使用JDT将源代码编译到target文件夹下,然后直接使用mvn package 打包即可(不要加clean)。

第二个,在pom.xml文件中为Maven指定用JDT来编译(推荐)

修改pom.xml文件中maven-compiler-plugin的配置:

<build>…<plugins>…<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>${java.version}</source><target>${java.version}</target><compilerId>eclipse</compilerId></configuration><dependencies><dependency><groupId>org.codehaus.plexus</groupId><artifactId>plexus-compiler-eclipse</artifactId><version>2.2</version></dependency></dependencies></plugin>….</plugins>…</build>保存,用Maven编译,,顺利通过,你又看到了熟悉的提示信息:[INFO] ————————————————————————[INFO] BUILD SUCCESS[INFO] ————————————————————————[INFO] Total time: 9.716 s[INFO] Finished at: 2015-03-31T12:35:12+09:00[INFO] Final Memory: 18M/219M[INFO] ————————————————————————

微风吹过,海面上金光闪闪,泛起一道道美丽的浪花,

Maven编译错误:不兼容的类型的解决方案

相关文章:

你感兴趣的文章:

标签云: