You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@samza.apache.org by Avi Flax <av...@aviflax.com> on 2016/02/08 22:12:52 UTC

java.lang.ClassNotFoundException: org.codehaus.jackson.annotate.JsonClass

Hi all, I’m trying to implement a Samza task in Ruby with JRuby but I seem
to be having some trouble with dependencies.

I’m using JBundler — https://github.com/mkristian/jbundler — to add
dependencies. I’m pretty sure it’s a wrapper around Maven.

My Jarfile contains this:

```
repository :apache, "https://repository.apache.org/content/groups/public"
repository :confluent, "http://packages.confluent.io/maven/"

jar 'io.confluent:kafka-avro-serializer', '~>2.0.0'
jar 'org.apache.samza:samza-api', '~>0.10.0'
jar 'org.apache.samza:samza-core_2.10', '~>0.10.0'
jar 'org.apache.samza:samza-shell', '~>0.10.0'
jar 'org.apache.samza:samza-yarn_2.10', '~>0.10.0'
jar 'org.apache.samza:samza-kv_2.10', '~>0.10.0'
jar 'org.apache.samza:samza-kv-rocksdb_2.10', '~>0.10.0'
jar 'org.apache.samza:samza-kv-inmemory_2.10', '~>0.10.0'
jar ‘org.apache.samza:samza-kafka_2.10', '~>0.10.0'
```

When I try to run one of my tests, I’m getting this:

```
Unhandled Java exception: java.lang.NoClassDefFoundError:
org/codehaus/jackson/annotate/JsonClass
java.lang.NoClassDefFoundError: org/codehaus/jackson/annotate/JsonClass
           findDeserializationType at
org/codehaus/jackson/map/introspect/JacksonAnnotationIntrospector.java:524
            modifyTypeByAnnotation at
org/codehaus/jackson/map/deser/BasicDeserializerFactory.java:729
            createBeanDeserializer at
org/codehaus/jackson/map/deser/BeanDeserializerFactory.java:427
               _createDeserializer at
org/codehaus/jackson/map/deser/StdDeserializerProvider.java:398
                  _createAndCache2 at
org/codehaus/jackson/map/deser/StdDeserializerProvider.java:307
  _createAndCacheValueDeserializer at
org/codehaus/jackson/map/deser/StdDeserializerProvider.java:287
             findValueDeserializer at
org/codehaus/jackson/map/deser/StdDeserializerProvider.java:136
        findTypedValueDeserializer at
org/codehaus/jackson/map/deser/StdDeserializerProvider.java:157
             _findRootDeserializer at
org/codehaus/jackson/map/ObjectMapper.java:2461
                  _readMapAndClose at
org/codehaus/jackson/map/ObjectMapper.java:2395
                         readValue at
org/codehaus/jackson/map/ObjectMapper.java:1602
                         fromBytes at
org/apache/samza/serializers/JsonSerde.scala:42
                         bootstrap at
org/apache/samza/coordinator/stream/CoordinatorStreamSystemConsumer.java:148
                               run at
org/apache/samza/job/JobRunner.scala:113
                              main at
org/apache/samza/job/JobRunner.scala:66
                            invoke at java/lang/reflect/Method.java:497
                              test at
src/bay_events_to_candidate_visits.rb:43
                             <top> at
src/bay_events_to_candidate_visits.rb:46
               invokeWithArguments at java/lang/invoke/MethodHandle.java:627
```

I’m at a bit of a loss on how to debug this.

I did try to figure out what Jackson artifacts are in my classpath, and it
looks like a bit of a mess:

```

$ cat Jarfile.lock | grep jackson

- org.codehaus.jackson:jackson-jaxrs:jar:1.9.13

- org.codehaus.jackson:jackson-core-asl:jar:1.9.13

- com.fasterxml.jackson.core:jackson-annotations:jar:2.5.0

- com.fasterxml.jackson.core:jackson-databind:jar:2.5.4

- org.codehaus.jackson:jackson-xc:jar:1.9.13

- org.codehaus.jackson:jackson-mapper-asl:jar:1.8.5

- com.fasterxml.jackson.core:jackson-core:jar:2.5.4

```


I’d appreciate any suggestions for how to resolve this!


Thanks,

Avi

Re: java.lang.ClassNotFoundException: org.codehaus.jackson.annotate.JsonClass

Posted by Avi Flax <av...@aviflax.com>.
On Tue, Feb 9, 2016 at 12:01 PM, Yi Pan <ni...@gmail.com> wrote:
> Could you try to fix the jackson version to 1.9.13 in your build first?

That fixed it! Thank you!

> It seems like a incompatible jackson version issue, as you have noticed in
> your classpath. It would be good if you can share your maven pom.xml as
> well.

Well, I’m using JBundler so I haven’t written a pom.xml and I don’t know if
JBundler can export one. It uses a Jarfile; here’s my current file:

```
repository :apache, "https://repository.apache.org/content/groups/public"
repository :confluent, "http://packages.confluent.io/maven/"

# This isn’t used directly by our code but I had issues wherein an older
# version was referenced by one of the top-level dependencies — and
# it was incompatible with… something else, not sure what. So I’m explicitly
# listing the latest version here to attempt to resolve that.
jar 'org.codehaus.jackson:jackson-mapper-asl', '1.9.13'

jar 'io.confluent:kafka-avro-serializer', '2.0.0'
jar 'org.apache.samza:samza-api', '0.10.0'
jar 'org.apache.samza:samza-core_2.10', '0.10.0'
jar 'org.apache.samza:samza-shell', '0.10.0'
jar 'org.apache.samza:samza-yarn_2.10', '0.10.0'
jar 'org.apache.samza:samza-kv_2.10', '0.10.0'
jar 'org.apache.samza:samza-kv-rocksdb_2.10', '0.10.0'
jar ‘org.apache.samza:samza-kafka_2.10', '0.10.0'
```

Thanks again!
Avi

Re: java.lang.ClassNotFoundException: org.codehaus.jackson.annotate.JsonClass

Posted by Yi Pan <ni...@gmail.com>.
Hi, Avi,

Could you try to fix the jackson version to 1.9.13 in your build first? It
seems like a incompatible jackson version issue, as you have noticed in
your classpath. It would be good if you can share your maven pom.xml as
well.

Thanks!

-Yi

On Mon, Feb 8, 2016 at 1:12 PM, Avi Flax <av...@aviflax.com> wrote:

> Hi all, I’m trying to implement a Samza task in Ruby with JRuby but I seem
> to be having some trouble with dependencies.
>
> I’m using JBundler — https://github.com/mkristian/jbundler — to add
> dependencies. I’m pretty sure it’s a wrapper around Maven.
>
> My Jarfile contains this:
>
> ```
> repository :apache, "https://repository.apache.org/content/groups/public"
> repository :confluent, "http://packages.confluent.io/maven/"
>
> jar 'io.confluent:kafka-avro-serializer', '~>2.0.0'
> jar 'org.apache.samza:samza-api', '~>0.10.0'
> jar 'org.apache.samza:samza-core_2.10', '~>0.10.0'
> jar 'org.apache.samza:samza-shell', '~>0.10.0'
> jar 'org.apache.samza:samza-yarn_2.10', '~>0.10.0'
> jar 'org.apache.samza:samza-kv_2.10', '~>0.10.0'
> jar 'org.apache.samza:samza-kv-rocksdb_2.10', '~>0.10.0'
> jar 'org.apache.samza:samza-kv-inmemory_2.10', '~>0.10.0'
> jar ‘org.apache.samza:samza-kafka_2.10', '~>0.10.0'
> ```
>
> When I try to run one of my tests, I’m getting this:
>
> ```
> Unhandled Java exception: java.lang.NoClassDefFoundError:
> org/codehaus/jackson/annotate/JsonClass
> java.lang.NoClassDefFoundError: org/codehaus/jackson/annotate/JsonClass
>            findDeserializationType at
> org/codehaus/jackson/map/introspect/JacksonAnnotationIntrospector.java:524
>             modifyTypeByAnnotation at
> org/codehaus/jackson/map/deser/BasicDeserializerFactory.java:729
>             createBeanDeserializer at
> org/codehaus/jackson/map/deser/BeanDeserializerFactory.java:427
>                _createDeserializer at
> org/codehaus/jackson/map/deser/StdDeserializerProvider.java:398
>                   _createAndCache2 at
> org/codehaus/jackson/map/deser/StdDeserializerProvider.java:307
>   _createAndCacheValueDeserializer at
> org/codehaus/jackson/map/deser/StdDeserializerProvider.java:287
>              findValueDeserializer at
> org/codehaus/jackson/map/deser/StdDeserializerProvider.java:136
>         findTypedValueDeserializer at
> org/codehaus/jackson/map/deser/StdDeserializerProvider.java:157
>              _findRootDeserializer at
> org/codehaus/jackson/map/ObjectMapper.java:2461
>                   _readMapAndClose at
> org/codehaus/jackson/map/ObjectMapper.java:2395
>                          readValue at
> org/codehaus/jackson/map/ObjectMapper.java:1602
>                          fromBytes at
> org/apache/samza/serializers/JsonSerde.scala:42
>                          bootstrap at
>
> org/apache/samza/coordinator/stream/CoordinatorStreamSystemConsumer.java:148
>                                run at
> org/apache/samza/job/JobRunner.scala:113
>                               main at
> org/apache/samza/job/JobRunner.scala:66
>                             invoke at java/lang/reflect/Method.java:497
>                               test at
> src/bay_events_to_candidate_visits.rb:43
>                              <top> at
> src/bay_events_to_candidate_visits.rb:46
>                invokeWithArguments at
> java/lang/invoke/MethodHandle.java:627
> ```
>
> I’m at a bit of a loss on how to debug this.
>
> I did try to figure out what Jackson artifacts are in my classpath, and it
> looks like a bit of a mess:
>
> ```
>
> $ cat Jarfile.lock | grep jackson
>
> - org.codehaus.jackson:jackson-jaxrs:jar:1.9.13
>
> - org.codehaus.jackson:jackson-core-asl:jar:1.9.13
>
> - com.fasterxml.jackson.core:jackson-annotations:jar:2.5.0
>
> - com.fasterxml.jackson.core:jackson-databind:jar:2.5.4
>
> - org.codehaus.jackson:jackson-xc:jar:1.9.13
>
> - org.codehaus.jackson:jackson-mapper-asl:jar:1.8.5
>
> - com.fasterxml.jackson.core:jackson-core:jar:2.5.4
>
> ```
>
>
> I’d appreciate any suggestions for how to resolve this!
>
>
> Thanks,
>
> Avi
>