Как исправить «NoSuchMethodError» в тесте sbt при переходе с kafka-client 0.10 на 0.11 - PullRequest
0 голосов
/ 02 июля 2019

Я изменил свою версию akka-stream-kafka с 0.11-M2 до 0.17, для этого также потребовалось, чтобы kafka-client поднял с 0.9 до 0.11.0 (и scala-lib 2.11.7 до 2.11.8).Код компилируется и работает нормально (это я знаю).Однако, если я запускаю sbt test, я получаю следующую ошибку:

utils.KafkaUtilSpec *** ABORTED ***
[21:04:04][Step 4/7] [info]   java.lang.NoSuchMethodError: org.apache.kafka.common.network.ChannelBuilders.create(Lorg/apache/kafka/common/protocol/SecurityProtocol;Lorg/apache/kafka/common/network/Mode;Lorg/apache/kafka/common/network/LoginType;Ljava/util/Map;Ljava/lang/String;Z)Lorg/apache/kafka/common/network/ChannelBuilder;
[21:04:04][Step 4/7] [info]   at kafka.network.Processor.<init>(SocketServer.scala:402)
[21:04:04][Step 4/7] [info]   at kafka.network.SocketServer.newProcessor(SocketServer.scala:140)
[21:04:04][Step 4/7] [info]   at kafka.network.SocketServer$$anonfun$startup$1$$anonfun$apply$1.apply$mcVI$sp(SocketServer.scala:93)
[21:04:04][Step 4/7] [info]   at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:166)
[21:04:04][Step 4/7] [info]   at kafka.network.SocketServer$$anonfun$startup$1.apply(SocketServer.scala:92)
[21:04:04][Step 4/7] [info]   at kafka.network.SocketServer$$anonfun$startup$1.apply(SocketServer.scala:88)
[21:04:04][Step 4/7] [info]   at scala.collection.Iterator$class.foreach(Iterator.scala:742)
[21:04:04][Step 4/7] [info]   at scala.collection.AbstractIterator.foreach(Iterator.scala:1194)
[21:04:04][Step 4/7] [info]   at scala.collection.MapLike$DefaultValuesIterable.foreach(MapLike.scala:206)
[21:04:04][Step 4/7] [info]   at kafka.network.SocketServer.startup(SocketServer.scala:88)
[21:04:04][Step 4/7] [info]   ...
[21:04:04][Step 4/7] [error] Uncaught exception when running utils.KafkaUtilSpec: java.lang.NoSuchMethodError: org.apache.kafka.common.network.ChannelBuilders.create(Lorg/apache/kafka/common/protocol/SecurityProtocol;Lorg/apache/kafka/common/network/Mode;Lorg/apache/kafka/common/network/LoginType;Ljava/util/Map;Ljava/lang/String;Z)Lorg/apache/kafka/common/network/ChannelBuilder;

Я полагаю, что ошибка произошла из-за зависимости: "net.manub" %% "scalatest-embedded-kafka"% "0.7.0"%" test "exclude (" log4j "," log4j "), поэтому я увеличил его до 0,15, и теперь я получаю эту ошибку в тесте sbt:

controllers.v1.MetaDatasetSpec *** ABORTED ***
    [info]   java.lang.NoSuchMethodError: kafka.server.KafkaServer$.$lessinit$greater$default$2()Lorg/apache/kafka/common/utils/Time;
    [info]   at net.manub.embeddedkafka.EmbeddedKafkaSupport$class.startKafka(EmbeddedKafka.scala:465)
    [info]   at controllers.v1.MetaDatasetSpec.startKafka(MetaDatasetSpec.scala:28)
    [info]   at net.manub.embeddedkafka.EmbeddedKafkaSupport$$anonfun$withRunningKafka$1$$anonfun$apply$1.apply(EmbeddedKafka.scala:136)
    [info]   at net.manub.embeddedkafka.EmbeddedKafkaSupport$$anonfun$withRunningKafka$1$$anonfun$apply$1.apply(EmbeddedKafka.scala:135)
    [info]   at net.manub.embeddedkafka.EmbeddedKafkaSupport$class.net$manub$embeddedkafka$EmbeddedKafkaSupport$$withTempDir(EmbeddedKafka.scala:187)
    [info]   at net.manub.embeddedkafka.EmbeddedKafkaSupport$$anonfun$withRunningKafka$1.apply(EmbeddedKafka.scala:135)
    [info]   at net.manub.embeddedkafka.EmbeddedKafkaSupport$$anonfun$withRunningKafka$1.apply(EmbeddedKafka.scala:134)
    [info]   at net.manub.embeddedkafka.EmbeddedKafkaSupport$$anonfun$withRunningZooKeeper$1.apply(EmbeddedKafka.scala:177)
    [info]   at net.manub.embeddedkafka.EmbeddedKafkaSupport$$anonfun$withRunningZooKeeper$1.apply(EmbeddedKafka.scala:174)
    [info]   at net.manub.embeddedkafka.EmbeddedKafkaSupport$class.net$manub$embeddedkafka$EmbeddedKafkaSupport$$withTempDir(EmbeddedKafka.scala:187)
    [info]   ...
    [error] Uncaught exception when running controllers.v1.MetaDatasetSpec: java.lang.NoSuchMethodError: kafka.server.KafkaServer$.$lessinit$greater$default$2()Lorg/apache/kafka/common/utils/Time;

Я пытался изменить свой" org.apache.kafka "%" kafka_2.11 "%" 0.9.0.1 "exclude (" log4j "," log4j "), до 0.11.0 вручную в build.sbt, но из sbt исключено, кажется, что Kafka_2.11 остается на 0.9.0.1

...