【MyBatis】ClassNotFoundException: Cannot find class: xxx`

2024-01-10 11:18:30

问题描述

在使用MyBatis的时候,报错信息如下:

Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'PlantModelParentsRuleInfo'.  Cause: java.lang.ClassNotFoundException: Cannot find class: PlantModelParentsRuleInfo
	at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:120)
	at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:149)
	at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:116)
	... 65 common frames omitted
Caused by: java.lang.ClassNotFoundException: Cannot find class: PlantModelParentsRuleInfo
	at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200)
	at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89)
	at org.apache.ibatis.io.Resources.classForName(Resources.java:261)
	at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:116)
	... 67 common frames omitt

原因分析:

在报错信息上有个ibatisxml文件上面的报错
结合报错信息上 .ClassNotFoundException: Cannot find class: PlantModelParentsRuleInfoPlantModelParentsRuleInfo 找不到
两者结合,我们就可以大致的推断出 是xml文件上的 PlantModelParentsRuleInfo 扫描不到


解决方案:

方法一:

首先,选择到需要的xml文件。
Ctrl + F 输入 PlantModelParentsRuleInfo,进行搜索:
发现,在xml文件中:如下图所示:只是写明了类名
在这里插入图片描述
那如果通过类名找不到的话,那就写上全限定名。

在这里插入图片描述

方法二

也可以动用mybatis的配置信息

# MyBatis配置
mybatis:
  # 搜索指定包别名
  typeAliasesPackage: com.ruoyi.**.domain
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # 加载全局的配置文件
  configLocation: classpath:mybatis/mybatis-config.xml

具体的映射思路如下:

在这里插入图片描述

举一反三

如果有这种报错信息呢?

# 问题描述借用文章:https://blog.csdn.net/Ma_Liu_Min/article/details/107514654
Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias ' com.***.facade.boss.***.NewStudentDto'.  Cause: java.lang.ClassNotFoundException: Cannot find class:  com.***.facade.boss.***.NewStudentDto
	at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:117)
	at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:130)
	at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:101)
	... 101 more
Caused by: java.lang.ClassNotFoundException: Cannot find class:  com.***.facade.boss.***.NewStudentDto
	at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:190)
	at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89)
	at org.apache.ibatis.io.Resources.classForName(Resources.java:256)
	at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:113)
	... 103 more

没错:就是在

xml 文件上 找不到 ' com.***.facade.boss.***.NewStudentDto'.

就是在写全限定名的时候,多加了一个空格。解决方法:去掉空格即可。

旧: ' com.facade.boss.NewStudentDto'.
新: 'com.facade.boss.NewStudentDto'.

文章来源:https://blog.csdn.net/qq_43718048/article/details/135494946
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。