【问题标题】:Maven conflicting dependency kafka-stream-test-utils and kafka-streamsMaven 冲突依赖 kafka-stream-test-utils 和 kafka-streams
【发布时间】:2020-09-08 12:07:49
【问题描述】:

获取此 Esception java.lang.NoClassDefFoundError: org/apache/kafka/streams/internals/QuietStreamsConfig。

可能是因为依赖冲突。 pom.xml中的相关jar

<dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-streams-test-utils</artifactId>
            <version>5.5.0-ccs</version>
            <scope>test</scope>
        </dependency>
<dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-streams</artifactId>
            <version>1.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId> org.apache.kafka</groupId>
                    <artifactId>kafka-clients</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>1.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

当我运行这个命令时 ** mvn 依赖:tree -Dverbose -Dincludes=org.apache.kafka **

com.walmart.sims.ica:fault-handler:jar:0.0.1-SNAPSHOT
[INFO] +- org.apache.kafka:kafka-streams-test-utils:jar:5.5.0-ccs:test
[INFO] |  +- (org.apache.kafka:kafka-streams:jar:5.5.0-ccs:test - omitted for conflict with 1.0.1)
[INFO] |  \- (org.apache.kafka:kafka-clients:jar:5.5.0-ccs:test - omitted for conflict with 1.0.1)
[INFO] +- org.apache.kafka:kafka-streams:jar:1.0.1:compile
[INFO] |  \- org.apache.kafka:connect-json:jar:1.0.1:compile
[INFO] |     \- org.apache.kafka:connect-api:jar:1.0.1:compile
[INFO] \- org.apache.kafka:kafka-clients:jar:1.0.1:compile

因此,由于冲突,我的测试依赖项被省略了,因此我在运行测试时遇到 ClassNotFoundException。

我应该如何解决冲突,以便 test-utils 的依赖项在测试范围内可用,否则在编译范围内使用 kafka-streams 和 kafka-clients 依赖项?

【问题讨论】:

    标签: java maven apache-kafka


    【解决方案1】:

    在真正的产品代码中使用一个版本并在测试代码中使用更新版本的依赖项有什么意义? 我建议将kafka-streams-test-utils 降级到使用kafka-streams:1.0.1 的版本或将您的应用程序使用的kafka-streams 版本升级到5.5.0-ccs。我认为 test-utils 版本 5.5.0-css 无论如何都不能与流版本 1.0.1 一起正常工作。 但是如果你想尝试,你可以从 test-utils 中排除 kafka-streams 和 kafka-client 依赖项

    【讨论】:

    • 是的,你是对的。我同步了测试版本和流版本,并将它们设为 2.4.0。尽管由于合同不断变化,我不得不返工。但效果很好。
    猜你喜欢
    • 2018-01-19
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 2011-03-12
    • 2013-06-24
    • 2013-07-20
    • 2021-09-03
    相关资源
    最近更新 更多