菜鸟调错(八)—— Maven编译错误:不兼容的类型的解决方案

泛型在实际的工做中应用很是普遍,关于泛型就不在这里赘述了,感兴趣请戳《从新认识泛型》。项目中用到了以下的泛型: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] ------------------------------------------------------------------------
相关文章
相关标签/搜索