java.lang.NoClassDefFoundError: org/codehaus/jackson/map/deser/std/StdDeserializer

Jersey-JSONとAWS-Java-SDKの併用時はjacksonのバージョンに注意

java.lang.NoClassDefFoundError: org/codehaus/jackson/map/deser/std/StdDeserializer


StdDeserializer.StringDeserializer (Jackson JSON Processor)

1.9系からはStdDeserializerを使用しないようになっています。

エラー発生時のpom.xmlを確認

・・・
<dependency>
	<groupId>com.amazonaws</groupId>
	<artifactId>aws-java-sdk</artifactId>
	<version>1.3.20</version>
</dependency>
・・・
<dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-json</artifactId>
	<version>1.14</version>
</dependency>
・・・

依存関係を見るとaws-java-sdk(v1.3.20)ではjackson(v1.8.9)を使用しているので
先に書くとv1.8.9が使用される
f:id:yustam:20121003122800j:plain

pom.xmlを修正し依存関係の順番を変更

・・・
<dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-json</artifactId>
	<version>1.14</version>
</dependency>
・・・
<dependency>
	<groupId>com.amazonaws</groupId>
	<artifactId>aws-java-sdk</artifactId>
	<version>1.3.20</version>
</dependency>
・・・

f:id:yustam:20121003122138j:plain
これでjackson1.9系を使用するようになる