最近升级了些依赖发现有个hutool的方法老报错,
java.lang.NoSuchMethodError: cn.hutool.core.util.ObjectUtil.defaultIfNull(Ljava/lang/Object;Ljava/util/function/Supplier;)
在 Maven 项目中,当不同的依赖模块引入 Hutool 的不同版本时,可能会导致冲突和运行时错误。为了解决这个问题,你可以采取以下步骤:
1. 识别是否依赖冲突
首先,先看看这个方法调用的是哪个包的方法。以下只是个举例。
如果不是最新版是旧版就很有可能冲突,或者你直接看Exteranl Libraries
2. 使用 Maven Analyze Dependency
3. 使用 <exclusions>
排除冲突的 Hutool 依赖
在项目的 pom.xml
文件中,对引起冲突的 Hutool 依赖使用 <exclusions>
标签排除。例如以上图中的justauth的包,引用了旧的hutool的包。把它排除,并刷新maven重新引入,就可以解决。
<dependency>
<groupId>com.xkcoding.justauth</groupId>
<artifactId>justauth-spring-boot-starter</artifactId>
<version>${justauth.version}</version>
<exclusions>
<exclusion>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
</exclusion>
</exclusions>
</dependency>
确保将冲突的 Hutool 依赖在每个模块的依赖中排除,这样可以防止模块间的版本冲突。