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

转载自:http://blog.csdn.net/liushuijinger/article/details/44618557

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

public <T> T query(String sql, ResultSetHandler<T> rsh) throws SQLException {  
    return this.query(sql, rsh, (Object[]) null);  
}  
以上代码在Eclipse中可以编译通过并成功运行,但是当你使用Maven编译的时候就会报错,错误信息如下:
xxx不兼容的类型  
需要:xxx  
找到:    java.lang.Object  
Eclipse编译代码时,使用的是自带的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] ------------------------------------------------------------------------  


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值