Skip to content

Instantly share code, notes, and snippets.

@kemsakurai
Created July 7, 2018 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kemsakurai/8e124ab4df1b741055fbbc1757c15e9d to your computer and use it in GitHub Desktop.
Save kemsakurai/8e124ab4df1b741055fbbc1757c15e9d to your computer and use it in GitHub Desktop.
jackson ReferenceTypeDeserializer が見つからない

Dropwizard の version up を実施したところ、Jackson で、下記のエラーが発生した。

Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/deser/std/ReferenceTypeDeserializer
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at com.fasterxml.jackson.datatype.guava.GuavaModule.setupModule(GuavaModule.java:55)
    at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:730)
    at io.dropwizard.jackson.Jackson.configure(Jackson.java:56)
    at io.dropwizard.jackson.Jackson.newObjectMapper(Jackson.java:27)
    at io.dropwizard.setup.Bootstrap.<init>(Bootstrap.java:64)
    at io.dropwizard.Application.run(Application.java:86)
    at xyz.monotalk.festivals4partypeople.web.dropwizard.start.Festivals4PartyPeopleApplication.main(Festivals4PartyPeopleApplication.java:33)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.deser.std.ReferenceTypeDeserializer
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

アプリケーションの pom.xml で定義していた Jackson の version と Dropzwizard が必要とする version が異なっていたために発生していた。アプリケーションでは、2.7.4 を定義していたが、Dropwizard の最新版 1.3.4 が 依存する Version は、2.9.6 で以下の通り、pom の dependency を書き換えた。
ReferenceTypeDeserializer2.8 から追加されたクラス。

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.9.6</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.6</version>
    </dependency>

ライブラリでの、NoClassDefFoundError はほとんどは 依存ライブラリの version が古いか、新しいかのどちらかで発生するように思う。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment