2019-07-29 11:20:25,811 WARN [org.apache.ibatis.io.ResolverUtil] - Could not examine class 'com/pengji/linker/common/security/shiro/HasAnyPermissionsTag.class' due to a java.lang.NoClassDefFoundError with message: javax/servlet/jsp/tagext/TagSupport
启动dubbo时一直重复报这个warning,报到最后抛错:
(同样错误的另外一种表现 Type handler was null on parameter mapping for property 'createTime')
Caused by: java.lang.IllegalStateException: No typehandler found for property createTime at org.apache.ibatis.mapping.ResultMapping$Builder.validate(ResultMapping.java:151) at org.apache.ibatis.mapping.ResultMapping$Builder.build(ResultMapping.java:140) at org.apache.ibatis.builder.MapperBuilderAssistant.buildResultMapping(MapperBuilderAssistant.java:382) at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildResultMappingFromContext(XMLMapperBuilder.java:378) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:280) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:252) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:244) at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116) ... 81 common frames omitted
发现对象属性使用LocalDateTime这是jdk8的新属性
之前项目依赖为:
<!--用于处理mybatis与java8中的localDate的sql映射-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
加了还是会报,遂改为:
<!--LocalDateTime-->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.2</version>
</dependency>
正常启动,大概是依赖关系错误吧,包冲突之类的问题。
后续:
由于其他模块也有LocalDateTime,pom文件这个版本又不起作用了,遂升级了mybatis版本。
如果不想加入新的依赖,也不想加入配置文件,则只需要将mybatis升级到3.4.6,将mybatis-spring的版本是升级到1.3.2即可,此时可以直接支持JDK1.8的日期类型。
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>