Schema-registry: Error using KafkaAvroDeserializer: java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonNode

Created on 10 Oct 2019  路  2Comments  路  Source: confluentinc/schema-registry

I'm building a scala application and trying to use the avro4s library with KafkaAvroDeserializer but instantiating the class leads to java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonNode.

The only place I see it being used is: avro-converter/src/main/java/io/confluent/connect/avro/AvroData.java

I haven't written much java, but I don't see any dependency in pom.xml file for avro-converter and the codehaus jackson repository seems really old.

A minimal example:

build.sbt

scalaVersion := "2.13.1"
name := "hello-world"
organization := "ch.epfl.scala"
version := "1.0"
libraryDependencies ++= Seq(
  "com.sksamuel.avro4s" %% "avro4s-core" % "3.0.1",
  "io.confluent" % "kafka-avro-serializer" % "5.0.1",
)
resolvers += "Confluent Maven Repository" at "https://packages.confluent.io/maven/"

Main.scala

import io.confluent.kafka.serializers.KafkaAvroDeserializer

object Main extends App  {
  val kafkaAvroDeserializer = new KafkaAvroDeserializer
}

Runtime Error

[error] java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonNode
[error]         at Main$.delayedEndpoint$Main$1(Main.scala:4)
[error]         at Main$delayedInit$body.apply(Main.scala:3)
[error]         at scala.Function0.apply$mcV$sp(Function0.scala:39)
[error]         at scala.Function0.apply$mcV$sp$(Function0.scala:39)
[error]         at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
[error]         at scala.App.$anonfun$main$1$adapted(App.scala:80)
[error]         at scala.collection.immutable.List.foreach(List.scala:392)
[error]         at scala.App.main(App.scala:80)
[error]         at scala.App.main$(App.scala:78)
[error]         at Main$.main(Main.scala:3)
[error]         at Main.main(Main.scala)
[error]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]         at java.lang.reflect.Method.invoke(Method.java:498)
[error] Caused by: java.lang.ClassNotFoundException: org.codehaus.jackson.JsonNode
[error]         at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
[error]         at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[error]         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[error]         at Main$.delayedEndpoint$Main$1(Main.scala:4)
[error]         at Main$delayedInit$body.apply(Main.scala:3)
[error]         at scala.Function0.apply$mcV$sp(Function0.scala:39)
[error]         at scala.Function0.apply$mcV$sp$(Function0.scala:39)
[error]         at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
[error]         at scala.App.$anonfun$main$1$adapted(App.scala:80)
[error]         at scala.collection.immutable.List.foreach(List.scala:392)
[error]         at scala.App.main(App.scala:80)
[error]         at scala.App.main$(App.scala:78)
[error]         at Main$.main(Main.scala:3)
[error]         at Main.main(Main.scala)
[error]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]         at java.lang.reflect.Method.invoke(Method.java:498)

```

Most helpful comment

@ikilledthecat Are you able to use kafka-avro-serializer 5.3.0 instead? That fixed the issue for me.

All 2 comments

@ikilledthecat Are you able to use kafka-avro-serializer 5.3.0 instead? That fixed the issue for me.

Yes updating to version 5.3 solved it. Thanks @giarc3

Was this page helpful?
0 / 5 - 0 ratings