SpringBoot项目使用外置Tomcat启动报错Failed to extract parameter names for org.apache.ibatis.mapping.ResultMap

错误信息:

springboot项目打成war包时部署到外部tomcat时报错,报错信息如下:

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'mybatis.configuration.result-maps[0]' to org.apache.ibatis.mapping.ResultMap:

    Reason: Failed to extract parameter names for org.apache.ibatis.mapping.ResultMap(org.apache.ibatis.mapping.ResultMap$1)

Action:

Update your application's configuration

原因分析:

在SpringBoot 2.1.9.RELEASE中不会出现这个问题,高版本中引入了JNDI查询而出现此问题,因此禁用jndi即可。
SpringBoot启动时会首先读取spring.properties配置文件,再去读取系统环境变量,查找spring.jndi.ignore的值。

解决方法

  1. 在项目resources根目录下新增spring.properties配置文件,配置文件内容为:
    spring.jndi.ignore=true
    
    注意配置文件的名称必须为spring.properties,原因请参见参考文档4
  2. Tomcat 启动时VM Options加上-Dspring.jndi.ignore=true

参考文档

1.https://github.com/baomidou/mybatis-plus/issues/1608
2.https://github.com/mybatis/spring-boot-starter/issues/387
3.https://github.com/mybatis/spring-boot-starter/issues/350
4.https://blog.csdn.net/qq_30739519/article/details/78536965

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章