Unable to load class[xxx xxx] to check against the @HandlesTypes annotation

当我在程序中指定按名称注入一个Bean时,使用了这个注解以唯一标识 @Resource(name="targetBeanId")

需要说明的是我依赖的jar包里有两个同名的provider,这两个provider用不同的id标识

启动Tomcat时出现以下告警信息:

WARNING: Unable to load class [org.codehaus.jackson.map.ser.impl.UnwrappingBeanPropertyWriter] to check against the @HandlesTypes annotation of one or more ServletContentInitializers. 

java.lang.VerifyError: class org.codehaus.jackson.map.ser.impl.UnwrappingBeanPropertyWriter overrides final method _findAndAddDynamic.(Lorg/codehaus/jackson/map/ser/impl/PropertySerializerMap;Ljava/lang/Class;Lorg/codehaus/jackson/map/SerializerProvider;)Lorg/codehaus/jackson/map/JsonSerializer;

不知道大家有没有遇到这样的情况

查阅资料以后,网上有两个说法很接地气

第一种是由于Tomcat版本引起的,大家可以试试7.0.23以上的Tomcat版本,看看告警信息是不是还存在。

第二种是修改web.xml配置文件,新增 metadata-complete="true" 的配置。

另外说明一下

关于metadata-complete="true"这个配置

当它为true时,意味着/WEB-INF/lib 下面的jar包不需要按照Servlet 3.0 specific annotations的标准去扫描,而项目webapps下的类还是会被扫描,当然,这也能提高tomcat的启动速度,如果你依赖的Jar包很多的话,这会十分明显!






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值