maven update解决TypeMismatchException
Posted weiwei5987
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven update解决TypeMismatchException相关的知识,希望对你有一定的参考价值。
突然项目启动不了,console日志显示有TypeMismatchException如下
nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [int] for property \'maxIdle\'; nested exception is java.lang.NumberFormatException: For input string: "@dbcp.maxIdle@"
从日志分析是xml配置文件中的一行
<property name="maxIdle" value="${dbcp.maxIdle}" />
而这个dbcp.maxIdle属性是配置在.properties文件中的
dbcp.maxIdle=@dbcp.maxIdle@
而properties文件这一行解析时,将@dbcp.maxIdle@当做字面值来解析了导致。
第一步,经网络搜索得知,在mybatis和spring整合时,有MapperScannerConfigurer和PropertyPlaceholderConfigurer两个加载顺序导致的问题
因为MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置sqlSessionFactory的话,会导致提前初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替换定义中的变量,导致把表达式当作字符串复制了,解决的办法如下: 方法一: 修改<property name="sqlSessionFactory" ref="sqlSessionFactory"/>为<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> 原理:使用sqlSessionFactoryBeanName注入,不会立即初始化sqlSessionFactory, 所以不会引发提前初始化问题。 方法二: 直接删掉<property name="sqlSessionFactory" ref="sqlSessionFactory"/> 注意:在没有配置这一行时,必须配置一个以sqlSessionFactory命名的org.mybatis.spring.SqlSessionFactoryBean。
但是经过检查,这一块配置并没有问题。
后来发现pom.xml文件上标记有出错
错误信息: Execution default-testResources of goal org.apache.maven.plugins:maven-resources-plugin:2.6错误
但是在本地的repository中,是有这个依赖的。试着maven-update project,错误修复了。
以上是关于maven update解决TypeMismatchException的主要内容,如果未能解决你的问题,请参考以下文章
eclipse maven update error 解决方法
解决maven项目update project会更改jdk版本问题
eclipse中项目maven update无法停止解决方法
eclipse中解决update maven之后jre被改成1.5的问题
解决maven update project 后项目jdk变成1.5的问题
解决Maven的Could not update project XXX configuration NullPointerException 错误