Обновление до Spring boot до версии 2.5.5 создает проблемы с библиотеками кафки

#spring-boot #apache-kafka #jar #spring-kafka #spring-kafka-test

Вопрос:

Я обновил версию 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.Ошибка noSuchMethod:кафка.сервер.КафкаСервер.(Lkafka/server/KafkaConfig;
Lorg/apache/общий/кафка/utils/Время;Lscala/Опция;/Lscala/коллекция/Продолжение;)V

Я много перепробовал, изменив версию в соответствии с требованиями матрицы совместимости spring docs https://spring.io/projects/spring-kafka

Есть идеи, в чем может быть проблема?

pom.xml (пружинный загрузчик 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>
 

Комментарии:

1. Можете ли вы поделиться своим полным pom или gradle?

2. @OneCricketeer Я добавил пом. пожалуйста, проверьте.

3. Вы не должны добавлять явные версии для зависимостей spring. Если вы это сделаете, то да, вы получите ошибки. В основном все они должны быть унаследованы от вашего стартового или родительского пом. В частности, хотя ваша зависимость Kafka Connect (репликатор) исключает пакет сервера-посредника, содержащий класс, который невозможно найти

4. Нет ничего подобного spring-kafka-clients . И, вероятно, вы kafka-connect-replicator тянете за собой этого Апача Кафку 2.8 .

5. При переопределении любых версий, которые предписывает загрузка, вы должны переопределить их для всех связанных банок — см. docs.spring.io/spring-kafka/docs/current/reference/html/… Однако лучше всего просто позволить boot обрабатывать версии зависимостей.

Ответ №1:

Всякий раз, когда вы указываете версию для клиентов kafka, вместо того, чтобы разрешать загрузке указывать версию; вы также должны переопределять версии банок kafka, используемых встроенным брокером.

https://docs.spring.io/spring-kafka/docs/current/reference/html/#update-deps

Комментарии:

1. помогли весенние документы, которыми вы поделились.