LoginSignup
3
0

More than 5 years have passed since last update.

jacksonでVerifyErrorが出る

Last updated at Posted at 2015-06-27

現象

scala(sbt)で今まで通っていたビルドが取らなくなった。
どうもjackson関係でこけているみたい。

java.lang.VerifyError: class com.fasterxml.jackson.module.scala.ser.ScalaIteratorSerializer overrides final method withResolved.(Lcom/fasterxml/jackson/databind/BeanProperty;Lcom/fasterxml/jackson/databind/jsontype/TypeSerializer;Lcom/fasterxml/jackson/databind/JsonSerializer;)Lcom/fasterxml/jackson/databind/ser/std/AsArraySerializerBase;
        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:455)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at com.fasterxml.jackson.module.scala.ser.IteratorSerializerModule$class.$init$(IteratorSerializerModule.scala:70)
        at com.fasterxml.jackson.module.scala.DefaultScalaModule.<init>(DefaultScalaModule.scala:19)

対策

  • このStackOverflowを参考にしました

    • VerifyErrorはRuntime時とCompile時で用いたソースが異なっている時に起こる
  • jackson-databindの最新版2.6.0-rc3リリースで、AsArraySelializerBase.javawithResolvedがdeprecatedになり、finalが付けられている

  • sbtでコンパイルを行うと、最新版がresolveされて、compile時はjackson-databind:2.6.0-rc3が使用されていた

[info]   +-com.fasterxml.jackson.module:jackson-module-scala_2.10:2.4.4 [S]
[info]   | +-com.fasterxml.jackson.core:jackson-annotations:2.4.4 (evicted by: 2.6.0-rc3)
[info]   | +-com.fasterxml.jackson.core:jackson-annotations:2.6.0-rc3
[info]   | +-com.fasterxml.jackson.core:jackson-core:2.4.4 (evicted by: 2.6.0-rc3)
[info]   | +-com.fasterxml.jackson.core:jackson-core:2.6.0-rc3
// Build.scalaの場合

     dependencyOverrides ++= Set(
       "com.fasterxml.jackson.core" % "jackson-databind" % "2.4.4"
     )

  • jackson-databindのversionは適当に選んで下さい。最新なら2.5.3かと。

最後に

  • sbtでのresolveは常に最新版を見に行くのでしょうか??ちょっとよくわからない...orz
3
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0