Caused by: java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseDeleteProvider.<init>()
nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseDeleteProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseDeleteProvider
百度上让我在启动类 @MapperScan 的包从 import org.mybatis.spring.annotation.MapperScan; 改为 import tk.mybatis.spring.annotation.MapperScan;
但是我的的版本就没有这个文件
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
1
Goooooos 336 天前
一般是依赖问题,classpath 存储两个不同版本的包,且两个包都有相同的类,可以试试 maven-enforcer-plugin 检查是否有冲突的依赖
https://www.mojohaus.org/extra-enforcer-rules/banDuplicateClasses.html |
2
ebony0319 336 天前
```java
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>4.2.3</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter-test</artifactId> <version>3.0.3</version> <scope>test</scope> </dependency> ``` ```java import tk.mybatis.spring.annotation.MapperScan; @MapperScan(basePackages = "com.xxx.mapper") @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` ```java import org.apache.ibatis.annotations.Mapper; import tk.mybatis.mapper.common.BaseMapper; @Mapper public interface xxxMapper extends BaseMapper<xxx> { } ``` 注意那个 MapperScan 是 tk 的,两个名字一样。 |
5
burymme11 336 天前
你用了 tk.mybatis 这个框架,引入的 spring start 也是 tk.mybatis 的吗?
|
6
Seulgi 336 天前
打包的 jar 启动没问题,那一般就是 idea 的 maven 缓存有问题。清一下 idea 缓存和索引,重启一下
|
8
testliyu 336 天前
我之前也有过这个问题,但是一直没解决掉,一直用 java 命令启动了。
|
9
imyasON OP 我刚刚试着把版本换成能改成 import tk.mybatis.mapper.common.BaseMapper; java -jar 也不行了。 但是改回原本的 1.3.1 java -jar 恢复正常。( idea 缓存也请了,maven 也 clean 了,离谱)
|
10
KOMA1NIUJUNSHENG 336 天前
一个依赖一个依赖的检查,大概率依赖的冲突。
|
11
imzcg2 336 天前
|
12
imyasON OP @imzcg2 链接文章第一个不适合我,我就引了正文提到的一个 pom ,第二个也不适用,1.x 的版本没有 tk...会报红,升级文中版本号 可以改 tk ,这样的话 java-jar 这一种方式也坏掉了
|
13
sephiroka 336 天前
几种 idea 特殊问题解决方法,我一直以来习惯
1 、清除 idea 缓存并重启 2 、maven/gradle 重新导入依赖,极端一点,删除 .m2 目录下所有已下载依赖 3 、克隆源码新建项目,其实也是重新导入依赖 4 、最后都不行了,利用 idea 插件分析依赖冲突问题 |
15
hooych 336 天前
IDEA 配置的 maven 和 path 配置的 maven 可能不是同一个。
|
16
imyasON OP |
17
Dlin 336 天前
你的依赖应该冲突问题。你的热部署插件 加载的类是没有这个方法的版本。
|
18
Dlin 336 天前
你可以尝试启动后 arthas 反编译看看加载的类是不是缺少这个方法。
|
19
Dlin 336 天前
热部署建议使用 jrebel ,spring 官方的用起来多多少少会有些问题,每次还要重新加载 class 后热重启。
|