当我在程序中指定按名称注入一个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包很多的话,这会十分明显!