【发布时间】:2023-04-01 10:09:01
【问题描述】:
我已将 Spring Boot 版本从 2.5.3 升级到 2.5.5,从而升级了这个库。
spring-kafka : from 2.7.4 to 2.7.7
spring-kafka-test : from 2.7.4 to 2.7.7
kafka-clients : from 2.7.1 to 2.8.1
spring-test : from 5.3.9 to 5.3.10
通过此升级,我开始收到错误消息: java.lang.NoSuchMethodError:kafka.server.KafkaServer.(Lkafka/server/KafkaConfig; lorg/apache/common/kafka/utils/Time;Lscala/Option;/Lscala/collection/Seq;)V
我根据spring docs https://spring.io/projects/spring-kafka的兼容性矩阵的要求尝试了很多更改版本
知道可能是什么问题吗?
pom.xml (spring-boot 2.5.5)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka-test</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-connect-replicator</artifactId>
<version>5.3.4</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>5.5.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>test</scope>
</dependency>
【问题讨论】:
-
你能分享你完整的 pom 或 gradle 吗?
-
@OneCricketeer 我添加了 pom.请检查。
-
您不应该为 spring 依赖项添加显式版本。如果你这样做,那么是的,你会得到错误。它们大部分都应该从你的启动器或父 pom 继承。特别是,尽管您的 Kafka Connect (Replicator) 依赖项不包括具有无法找到的类的代理服务器包
-
没有像
spring-kafka-clients这样的东西。并且可能您的kafka-connect-replicator为您提取了 Apache Kafka2.8。 -
当覆盖 Boot 规定的任何版本时,您必须为所有相关 jar 覆盖它们 - 请参阅 docs.spring.io/spring-kafka/docs/current/reference/html/… 但是,最好让 boot 处理依赖版本。
标签: spring-boot apache-kafka jar spring-kafka spring-kafka-test