如何解决Kafka的JUnit依赖问题?

时间:2019-03-26 15:02:17

标签: junit apache-kafka

我想使用Kafka for JUnit,所以我添加了此依赖项:

<dependency>
    <groupId>net.mguenther.kafka</groupId>
    <artifactId>kafka-junit</artifactId>
    <version>2.1.0</version>
    <scope>test</scope>
</dependency>

在本地运行良好。但是在詹金斯上,我得到一个错误:

  

java.lang.NoClassDefFound scala / math / Ordering

如果我添加scala-library依赖项(版本2.1.12),则会得到:

  

java.lang.NoClassDefFound com.typesafe.scalalogging.Logger $

此外,我还有几个Apache Beam版本的2.9.0依赖项。

我可以检查些什么来解决此问题?

UPD

如果我添加此依赖项:

<dependency>
    <groupId>com.github.charithe</groupId>
    <artifactId>kafka-junit</artifactId>
    <version>${kafkaJunit.version}</version>
</dependency>

我得到:

  

java.lang.NoClassDefFoundError:scala / MatchError

如果我添加scala-library(版本2.1.12),则会得到:

  

java.lang.NoSuchMethodError:scala.Predef $ .refArrayOps([Ljava / lang / Object;)[Ljava / lang / Object;

在最新版本中,我得到:

  

java.lang.NoClassDefFound com.typesafe.scalalogging.Logger $

1 个答案:

答案 0 :(得分:0)

UPD

我按@AntonLitvinenko的建议使用Kafka for JUnit遇到了异常。我的问题here

我添加了此依赖关系以对其进行修复(请参见issue):

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-test</artifactId>
    <version>2.12.0</version>
    <exclusions>
        <exclusion>
           <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </exclusion>
    </exclusions>
    <scope>test</scope>
</dependency>

此外,我将2.0.1版本用于kafka-junit和kafka_2.11:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.11</artifactId>
    <version>${kafkaVersion}</version>
    <scope>test</scope>
</dependency>

OLD

我决定在Salesforce之前使用另一个Kafka-JUnit库。我添加了这组依赖项:

<!-- Declare kafka-junit4 dependency -->
<dependency>
    <groupId>com.salesforce.kafka.test</groupId>
    <artifactId>kafka-junit4</artifactId>
    <version>3.1.1</version>
    <scope>test</scope>
</dependency>

<!-- Include Kafka 2.0.x -->
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.11</artifactId>
    <version>2.0.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.0.1</version>
    <scope>test</scope>
</dependency>

现在我的测试效果很好。

您可以查看此库here的使用说明。

我试图将Kafka版本提高到2.1.1,但有一个例外:

  

java.lang.NoClassDefFoundError:scala / Function1

所以,我认为主要问题是使用Kafka版本。