0

I recently changed my application's Kafka client version. And immediately after that my integration tests start failing due to the below mentioned issue with embedded Kafka. This is the snippet from my code which is initialising embedded Kafka broker.

@ClassRule
public static EmbeddedKafkaRule kafkaEmbedded = new EmbeddedKafkaRule(1, true, 1, KafkaTopic.getTopics());

Here, KafkaTopic.getTopics() returns a list of topics. I am currently using spring-kafka-test 2.2.8.RELEASE and spring-kafka 1.3.8.RELEASE.

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

    at kafka.cluster.EndPoint$.<init>(EndPoint.scala:32)
    at kafka.cluster.EndPoint$.<clinit>(EndPoint.scala)
    at kafka.server.Defaults$.<init>(KafkaConfig.scala:68)
    at kafka.server.Defaults$.<clinit>(KafkaConfig.scala)
    at kafka.server.KafkaConfig$.<init>(KafkaConfig.scala:781)
    at kafka.server.KafkaConfig$.<clinit>(KafkaConfig.scala)
    at kafka.utils.TestUtils$.createBrokerConfig(TestUtils.scala:234)
    at kafka.utils.TestUtils.createBrokerConfig(TestUtils.scala)
    at org.springframework.kafka.test.EmbeddedKafkaBroker.createBrokerProperties(EmbeddedKafkaBroker.java:239)
    at org.springframework.kafka.test.EmbeddedKafkaBroker.afterPropertiesSet(EmbeddedKafkaBroker.java:214)
    at org.springframework.kafka.test.rule.EmbeddedKafkaRule.before(EmbeddedKafkaRule.java:109)
    at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:46)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)

Can someone suggest a fix for this?

6
  • can you share the code snippet too? Commented May 13, 2020 at 9:56
  • looks like a change in the scala version Commented May 13, 2020 at 9:57
  • I tried adding testCompile 'org.scala-lang:scala-library:2.11.8' in my build.gradle but didn't helped. Can you suggest which version to use. Commented May 13, 2020 at 10:00
  • 1
    I have faced similar issued when I switched scala version. Reaplaced all my dependencies with compatible new scala version and it worked Commented May 13, 2020 at 10:01
  • 1
    You can't mix versions like that spring-kafka-test 2.2.8.RELEASE and spring-kafka 1.3.8.RELEASE. - they must be the same. Also see my answer. Commented May 13, 2020 at 13:58

1 Answer 1

1

spring-kafka-test 2.2.8.RELEASE and spring-kafka 1.3.8.RELEASE.

You can't do that; the versions must match.

Also, when overriding the kafka-clients version, you must also override the other kafka jars used by the test embedded broker.

See the appendix for whichever version you are using; for example:

https://docs.spring.io/spring-kafka/docs/2.4.6.RELEASE/reference/html/#deps-for-24x

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.