EmbeddedKafkaBroker устанавливает свойства, генерирует NoClassDefFoundError: kafka / zk / EmbeddedZookeeper - PullRequest
1 голос
/ 02 июня 2019

Когда мы инициализируем EmbeddedKafkaBroker с:

EmbeddedKafkaBroker embeddedKafkaBroker = new EmbeddedKafkaBroker(1, true, 1, environment.getProperty("producer_topic"), environment.getProperty("consumer_topic"));
embeddedKafkaBroker.afterPropertiesSet();

Вторая строка бросков:

method 'embeddedKafkaBroker' threw exception; nested exception is java.lang.NoClassDefFoundError: kafka/zk/EmbeddedZookeeper

РЕДАКТИРОВАТЬ - Добавлен GAV-формат зависимостей Мы видели много ответов относительно несоответствия зависимостей, поэтому мы проверили наши. Мы не можем поместить все poms, которые мы используем, поэтому вот соответствующие зависимости:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-test</artifactId>
  <version>1.5.6.RELEASE</version>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot</artifactId>
    </exclusion>
  </exclusions>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>5.1.3.RELEASE</version>
  <scope>compile</scope>
</dependency>

<dependency>
  <groupId>org.springframework.kafka</groupId>
  <artifactId>spring-kafka-test</artifactId>
  <version>2.2.6.RELEASE</version>
</dependency>

<dependency>
  <groupId>org.springframework.kafka</groupId>
  <artifactId>spring-kafka</artifactId>
  <version>2.2.0.RELEASE</version>
</dependency>

<dependency>
  <groupId>org.apache.kafka</groupId>
  <artifactId>kafka-clients</artifactId>
  <version>2.2.0</version>
</dependency>

<dependency>
  <groupId>org.apache.kafka</groupId>
  <artifactId>kafka_2.11</artifactId>
  <version>2.2.0</version>
  <exclusions>
    <exclusion>
      <artifactId>kafka-clients</artifactId>
      <groupId>org.apache.kafka</groupId>
    </exclusion>
  </exclusions>
</dependency>

<dependency>
  <groupId>org.apache.kafka</groupId>
  <artifactId>kafka-streams</artifactId>
  <version>2.0.1</version>
</dependency>

Есть идеи?

1 Ответ

0 голосов
/ 02 июня 2019

Вам как-то не хватает kafka_2.11-2.2.0-test.jar; обычно он проходит через пружинный тест kafka.

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.12</artifactId>
    <version>2.2.0</version>
    <classifier>test</classifier>
    <scope>test</scope>
</dependency>

Кстати, scala 2_12 рекомендуется для клиентов 2.x.

Кроме того, ваша банка kafka-streams должна быть той же версии, что и kafka-clients.

Подробнее о том, как переопределить зависимости, см. В приложении к справочному руководству Spring для Apache Kafka.

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
    <version>${spring.kafka.version}</version>
</dependency>

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka-test</artifactId>
    <version>${spring.kafka.version}</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.11</artifactId>
        </exclusion>
    </exclusions>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.2.0</version>
</dependency>

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.2.0</version>
    <classifier>test</classifier>
</dependency>

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.12</artifactId>
    <version>2.2.0</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.12</artifactId>
    <version>2.2.0</version>
    <classifier>test</classifier>
    <scope>test</scope>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...