You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Play Framework 3.0.5与jackson-databind 2.17.0版本兼容问题求助

Play Framework 3.0.5 Jackson版本冲突解决方案

问题背景

我有一个Play Framework 3.0.5项目,因更新某模块需使用jackson-databind 2.17.0版本,但运行时出现版本不兼容错误。该模块必须依赖2.17.0版本,且Scala module 2.14.3是Play 3库的一部分,无法直接降级databind版本。

错误信息

[IJ][projectX] $ run
--- (Running the application, auto-reloading is enabled) ---
[error] com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.14.3 requires Jackson Databind version >=2.14.0 and <2.15.0
- Found jackson-databind version 2.17.0
[error]   at com.fasterxml.jackson.module.scala.JacksonModule.setupModule(JacksonModule.scala:61)
[error]   at com.fasterxml.jackson.module.scala.JacksonModule.setupModule$(JacksonModule.scala:38)
[error]   at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:17)
[error]   at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:908)
[error]   at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider$.configureObjectMapperModules$$anonfun$1(JacksonObjectMapperProvider.scala:252)
[error]   at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error]   at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error]   at scala.collection.immutable.List.foreach(List.scala:334)
[error]   at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider$.configureObjectMapperModules(JacksonObjectMapperProvider.scala:253)
[error]   at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider$.createObjectMapper(JacksonObjectMapperProvider.scala:275)
[error]   at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider.create(JacksonObjectMapperProvider.scala:369)
[error]   at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider.getOrCreate$$anonfun$1(JacksonObjectMapperProvider.scala:327)
[error]   at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
[error]   at org.apache.pekko.serialization.jackson.JacksonObjectMapperProvider.getOrCreate(JacksonObjectMapperProvider.scala:327)
[error]   at org.apache.pekko.serialization.jackson.JacksonJsonSerializer.(JacksonSerializer.scala:151)
[error]   at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[error]   at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[error]   at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[error]   at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
[error]   at org.apache.pekko.actor.ReflectiveDynamicAccess.createInstanceFor$$anonfun$1(ReflectiveDynamicAccess.scala:50)
[error]   at scala.util.Try$.apply(Try.scala:217)
[error]   at org.apache.pekko.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:54)
[error]   at org.apache.pekko.actor.ReflectiveDynamicAccess.createInstanceFor$$anonfun$2(ReflectiveDynamicAccess.scala:58)
[error]   at scala.util.Success.flatMap(Try.scala:266)
[error]   at org.apache.pekko.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:58)
[error]   at org.apache.pekko.serialization.Serialization$$anon$2$$anon$3.applyOrElse(Serialization.scala:411)
[error]   at org.apache.pekko.serialization.Serialization$$anon$2$$anon$3.applyOrElse(Serialization.scala:405)
[error]   at scala.util.Failure.recoverWith(Try.scala:249)
[error]   at org.apache.pekko.serialization.Serialization$$anon$2.applyOrElse(Serialization.scala:411)
[error]   at org.apache.pekko.serialization.Serialization$$anon$2.applyOrElse(Serialization.scala:403)
[error]   at scala.util.Failure.recoverWith(Try.scala:249)
[error]   at org.apache.pekko.serialization.Serialization.serializerOf(Serialization.scala:412)
[error]   at org.apache.pekko.serialization.Serialization.$anonfun$2(Serialization.scala:437)
[error]   at scala.collection.Iterator$$anon$9.next(Iterator.scala:584)
[error]   at scala.collection.immutable.HashMapBuilder.addAll(HashMap.scala:2406)
[error]   at scala.collection.immutable.HashMap$.from(HashMap.scala:2218)
[error]   at scala.collection.immutable.HashMap$.from(HashMap.scala:2194)
[error]   at scala.collection.MapOps$WithFilter.map(Map.scala:396)
[error]   at org.apache.pekko.serialization.Serialization.(Serialization.scala:437)
[error]   at org.apache.pekko.serialization.SerializationExtension$.createExtension(SerializationExtension.scala:28)
[error]   at org.apache.pekko.serialization.SerializationExtension$.createExtension(SerializationExtension.scala:28)
[error]   at org.apache.pekko.actor.ActorSystemImpl.registerExtension(ActorSystem.scala:1177)
[error]   at org.apache.pekko.actor.ActorSystemImpl.loadExtensions$1$$anonfun$1(ActorSystem.scala:1220)
[error]   at scala.collection.immutable.Vector.foreach(Vector.scala:2124)
[error]   at org.apache.pekko.actor.ActorSystemImpl.loadExtensions$1(ActorSystem.scala:1229)
[error]   at org.apache.pekko.actor.ActorSystemImpl.loadExtensions(ActorSystem.scala:1233)
[error]   at org.apache.pekko.actor.ActorSystemImpl.liftedTree3$1(ActorSystem.scala:1054)
[error]   at org.apache.pekko.actor.ActorSystemImpl._start$lzyINIT1(ActorSystem.scala:1062)
[error]   at org.apache.pekko.actor.ActorSystemImpl._start(ActorSystem.scala:1041)
[error]   at org.apache.pekko.actor.ActorSystemImpl.start(ActorSystem.scala:1064)
[error]   at org.apache.pekko.actor.ActorSystem$.apply(ActorSystem.scala:282)
[error]   at org.apache.pekko.actor.ActorSystem$.apply(ActorSystem.scala:326)
[error]   at org.apache.pekko.actor.ActorSystem$.apply(ActorSystem.scala:300)
[error]   at play.core.server.DevServerStart$.mkServerActorSystem(DevServerStart.scala:90)
[error]   at play.core.server.DevServerStart$.mainDev$$anonfun$2(DevServerStart.scala:80)
[error]   at play.core.server.DevServerStart.mainDev$$anonfun$1(DevServerStart.scala:308)
[error]   at play.utils.Threads$.withContextClassLoader(Threads.scala:22)
[error]   at play.core.server.DevServerStart.mainDev(DevServerStart.scala:332)
[error]   at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:80)
[error]   at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala:55)
[error]   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error]   at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]   at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[error]   at play.runsupport.Reloader$.startDevMode(Reloader.scala:314)
[error] stack trace is suppressed; run last Compile / run for the full output
[error] (Compile / run) com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.14.3 requires Jackson Databind version >=2.14.0 and <2.15.0 - Found jackson-databind version 2.17.0
[error] Total time: 2 s, completed 13 Feb 2025, 14:43:44

解决方案

1. 强制升级Jackson Scala Module版本

Jackson Scala Module与databind版本严格对齐,2.17.x版本的Scala Module完全兼容2.17.x的databind。在项目的build.sbt中添加依赖覆盖:

// 方法一:使用dependencyOverrides强制覆盖版本
dependencyOverrides += "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.17.0"

// 方法二:直接引入并强制使用该版本
libraryDependencies += "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.17.0" force()

2. 验证依赖一致性

执行以下命令检查依赖树,确认jackson-module-scala和jackson-databind均为2.17.0版本,无其他冲突依赖:

sbt dependencyTree

3. 检查Pekko序列化配置

错误源于Pekko使用Jackson进行序列化,若项目中有自定义的ObjectMapper配置,确保注册的是DefaultScalaModule的最新版本,避免手动指定旧版本模块。

内容的提问来源于stack exchange,提问作者Luuk D. Jansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:30:55