异常提示org.apache.ibatis.annotations.Param;at sun.reflect.generics.reflectiveObjects.ParameterizedTypeI

时间:2024-04-08 11:57:15

问题背景:导入一个新项目,先在公司电脑正常导入;项目拿回家在自己电脑导入失败...

问题描述:首先是在我的dao中报错,org.apache.ibatis.annotations.Param,如下:

异常提示org.apache.ibatis.annotations.Param;at sun.reflect.generics.reflectiveObjects.ParameterizedTypeI

在网上搜了之后说我没导入ibatis的jar包,因为@Param这个类是ibatis的jar包中的,但是很奇怪,我用的是mybatis,之前项目根本没有导入那个jar包,直觉告诉我这么处理是不靠谱的,但是还是尝试了一下,导入jar包依赖后,错误马上消失了,庆幸了一下。然而当tomcat运行起来的时候问题就出来了,显示at sun.reflect.generics.reflectiveObjects.ParameterizedTypeI,这个错误原因真是看不懂,最后还是删了之前导的jar包,直接修改mybatis版本为最新版本(可以在maven*仓库查),然后项目就正常了。


原因分析:

原因1:spring整合mybatis的时候,对mybatis的版本是有要求的,如下:

<dependency><--错误,不兼容-->
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>

两个mybatis版本不兼容,把第一个dependency的mybatis版本提高的最新就可以解决这个问题了。改变后的结果如下所示:

<dependency><--提高mybatis版本后,正常兼容-->
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.7</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>

原因2:两台电脑的eclipse版本不一致,自己电脑的版本较高,可能不同版本的兼容性要求不一致,低版本的eclipse对这个兼容性要求不高,所以没有报错,新版本的eclipse的对兼容性有要求,所以报错。



总结:直接修mybatis版本为最新(较新)版本就行。