NoSuchMethodError: org.springframework.core.type.AnnotationMetadata.introspect

Spring Boot启动报错:NoSuchMethodError与依赖冲突
在尝试引入spring-data-mongodb 2.2.6.RELEASE版本时,与现有spring-boot-starter 2.1.2.RELEASE及spring核心库版本不兼容,导致启动时报错。错误信息表明存在spring核心类的版本冲突。解决办法是将spring-boot-starter及其依赖的spring库版本升级到与spring-data-mongodb相匹配的5.2.0.RELEASE,或者回退spring-data-mongodb到与现有spring版本兼容的版本。

spring boot启动报错如下

java.lang.NoSuchMethodError: org.springframework.core.type.AnnotationMetadata.introspect(Ljava/lang/Class;)Lorg/springframework/core/type/AnnotationMetadata;
	at org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition.<init>(AnnotatedGenericBeanDefinition.java:58)
	at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.doRegisterBean(AnnotatedBeanDefinitionReader.java:216)
	at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:145)
	at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.register(AnnotatedBeanDefinitionReader.java:135)
	at org.springframework.boot.BeanDefinitionLoader.load(BeanDefinitionLoader.java:158)

主要是包冲突,新引入依赖

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

而且spring-boot-starter版本却是

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>2.1.2.RELEASE</version>
</dependency>

依赖的spring版本是

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.1.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-bean</artifactId>
    <version>5.1.4.RELEASE</version>
</dependency>

而spring-data-mongodb依赖的版本是

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.2.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-bean</artifactId>
    <version>5.2.0.RELEASE</version>
</dependency>

由于spring-boot-starter是内部强依赖,没招只能降版本

虽然给定的参考引用中未直接提及 `Java NoSuchMethodError: org.springframework.data.redis.connection.jedis.jedisConverters.tosetcommandNxXxArgument` 错误的解决方案,但可以根据类似错误的解决思路来尝试。 通常,`NoSuchMethodError` 错误是由于版本依赖不匹配导致的。在整合 Spring 和 Redis 时,不同版本的 `spring-data-redis` 和 `jedis` 可能会出现兼容性问题。 对于之前提到的类似错误,如 `java.lang.NoSuchMethodError: redis.clients.jedis.JedisShardInfo.setTimeout(I)V`,是因为 `jedis` 客户端版本过高,将 `jedis` 的版本号换为 2.6.2 以下就解决了问题 [^1]。还有 `java.lang.NoSuchMethodError: org.springframework.data.redis.core.StringRedisTemplate.delete(Ljava/lang/Object;)V` 等错误,也与版本依赖有关 [^3]。 因此,解决 `Java NoSuchMethodError: org.springframework.data.redis.connection.jedis.jedisConverters.tosetcommandNxXxArgument` 错误可以尝试以下方法: 1. **检查并调整版本依赖**:确认 `spring-data-redis` 和 `jedis` 的版本兼容性。可以参考官方文档或者社区的建议,选择合适的版本组合。例如,尝试降低 `jedis` 的版本,或者升级 `spring-data-redis` 的版本。 2. **清理缓存并重新构建项目**:有时候,本地的缓存文件可能会导致版本信息混乱。可以清理项目的缓存文件,如 `.m2` 目录下的相关文件,然后重新构建项目。 以下是一个 Maven 依赖示例,可根据实际情况调整版本: ```xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.6.2</version> <!-- 可根据实际情况调整 --> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.4.2</version> <!-- 可根据实际情况调整 --> </dependency> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值