After lots of hacking I figure out how to resolve this problem. This is good
solution. It severalty cripples jackson but at least for now I am unblocked
1) turn off annotations.
mapper.configure(Feature.USE_ANNOTATIONS, false);
2) in maven set the jackson dependencies as provided.
<properties>
<jackson.version>1.9.13</jackson.version> <!-- 1.8.8 1.9.13 2.3.4-Final -->
</properties>
<dependencies>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<scope>provided</scope>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<scope>provided</scope>
<version>${jackson.version}</version>
</dependency>
Hope this helps someone else
andy
From: Andrew Davidson <[email protected]>
Date: Wednesday, September 17, 2014 at 4:28 PM
To: "[email protected]" <[email protected]>
Subject: spark-1.1.0-bin-hadoop2.4 java.lang.NoClassDefFoundError:
org/codehaus/jackson/annotate/JsonClass
> Hi I am new to spark.
>
> I am trying to write a simple java program that process tweets that where
> collected and stored in a file. I figured the simplest thing to do would be to
> convert the JSON string into a java map. When I submit my jar file I keep
> getting the following error
>
> java.lang.NoClassDefFoundError: org/codehaus/jackson/annotate/JsonClass
>
>
> For the life of me I can not figure out what the problem is. I am using maven
> shade plugin and check to see that the missing class is my uber jar
>
> Any suggestions would be greatly appreciated.
>
> Andy
>
> P.s. I should mention that I am running everything on my local machine.
>
> <properties>
>
> <jackson.version>1.8.8</jackson.version> <!-- 1.9.13 -->
>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>
> </properties>
>
>
>
> <dependencies>
>
> <dependency>
>
> <groupId>org.codehaus.jackson</groupId>
>
> <artifactId>jackson-core-asl</artifactId>
>
> <version>${jackson.version}</version>
>
> </dependency>
>
> <dependency>
>
> <groupId>org.codehaus.jackson</groupId>
>
> <artifactId>jackson-mapper-asl</artifactId>
>
> <version>${jackson.version}</version>
>
> </dependency>
>
>
>
> I am using shade to build an uber jar
>
>
>
> $jar tvf target/myUber.jar
>
>
>
> 580 Wed Sep 17 16:17:36 PDT 2014
> org/codehaus/jackson/annotate/JsonClass.class
>
>
>
>
>
>
> 14/09/17 16:13:24 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0)
>
> java.lang.NoClassDefFoundError: org/codehaus/jackson/annotate/JsonClass
>
> at
> org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector.findDeserial
> izationType(JacksonAnnotationIntrospector.java:524)
>
> at
> org.codehaus.jackson.map.deser.BasicDeserializerFactory.modifyTypeByAnnotation
> (BasicDeserializerFactory.java:732)
>
> at
> org.codehaus.jackson.map.deser.BasicDeserializerFactory.createMapDeserializer(
> BasicDeserializerFactory.java:337)
>
> at
> org.codehaus.jackson.map.deser.StdDeserializerProvider._createDeserializer(Std
> DeserializerProvider.java:377)
>
> at
> org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCache2(StdDes
> erializerProvider.java:307)
>
> at
> org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCacheValueDes
> erializer(StdDeserializerProvider.java:287)
>
> at
> org.codehaus.jackson.map.deser.StdDeserializerProvider.findValueDeserializer(S
> tdDeserializerProvider.java:136)
>
> at
> org.codehaus.jackson.map.deser.StdDeserializerProvider.findTypedValueDeseriali
> zer(StdDeserializerProvider.java:157)
>
> at
> org.codehaus.jackson.map.ObjectMapper._findRootDeserializer(ObjectMapper.java:
> 2468)
>
> at
> org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2402)
>
> at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1609)
>
> at com.santacruzintegration.spark.JSONHelper.toJsonMap(JSONHelper.java:40)
>
>
>
>
>
> public class JSONHelper {
>
> public static final ObjectMapper mapper = new ObjectMapper();
>
> static {
>
> mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
>
> //mapper.configure(Feature.USE_ANNOTATIONS, false);
>
> }
>
>
>
> public static Map<String, String> toJsonMap(String json) {
>
> System.err.println("AEDWIP toJsonMap: " + json);
>
> try {
>
> TypeReference<HashMap<String, String>> typeRef = new
> TypeReference<HashMap<String, String>>() {
>
> };
>
> //return mapper.readValue(json, new
> TypeReference<HashMap<String,String>>(){});
>
> return mapper.readValue(json, typeRef);
>
> //return mapper.convertValue(json, typeRef);
>
>
>
> // HashMap<String,String> ret =
>
> // new ObjectMapper().readValue(json, HashMap.class);
>
> } catch (Exception e) {
>
> throw new IOError(e);
>
> }
>
> }
>
>
>
>
>