泛型在實際的工做中應用很是普遍,關於泛型就不在這裏贅述了,感興趣請戳《從新認識泛型》。項目中用到了以下的泛型:java
public <T> T query(String sql, ResultSetHandler<T> rsh) throws SQLException { return this.query(sql, rsh, (Object[]) null); }
以上代碼在Eclipse中能夠編譯經過併成功運行,可是當你使用Maven編譯的時候就會報錯,錯誤信息以下: sql
xxx不兼容的類型
須要:xxx
找到: java.lang.Object
Eclipse編譯代碼時,使用的是自帶的JDT(Java Development Tools),而Maven默認使用的是JAVA_HONE中的javac,而javac相對JDT的檢查機制來講,更加的嚴格,因此致使Eclipse能夠編譯經過,而用Maven編譯會報錯的結果。 apache
解決方案有兩個: eclipse
第一個,藉助Eclipse的JDT編譯 maven
點擊 Eclipse –> Project –> Clean… 使用JDT將源代碼編譯到target文件夾下,而後直接使用mvn package 打包便可(不要加clean)。 ui
第二個,在pom.xml文件中爲Maven指定用JDT來編譯(推薦) this
修改pom.xml文件中maven-compiler-plugin的配置: spa
<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編譯,順利經過,你又看到了熟悉的提示信息: .net
[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] ------------------------------------------------------------------------