Play Framework 2.8.8 с AWS Java SDK 1.12.6 (com.fasterxml.jackson.databind.JsonMappingException)

Начал новый проект по этому маршруту:

sbt new playframework/play-scala-seed.g8

как указано на этой странице: https://www.playframework.com/getting-started

Он работает, как и ожидалось.

Теперь мне нужно добавить части AWS SDK, подобные следующим, в файл build.sbt:

"com.amazonaws" % "aws-java-sdk-dynamodb" % "1.12.6"
"com.amazonaws" % "aws-java-sdk-s3" % "1.12.6"

Проблема в том, что sbt run теперь трассирует стек следующим образом:

[error] com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.11.4 requires Jackson Databind version >= 2.11.0 and < 2.12.0
[error]     at com.fasterxml.jackson.module.scala.JacksonModule.setupModule(JacksonModule.scala:61)
[error]     at com.fasterxml.jackson.module.scala.JacksonModule.setupModule$(JacksonModule.scala:46)
[error]     at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:17)
[error]     at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:835)
[error]     at akka.serialization.jackson.JacksonObjectMapperProvider$.$anonfun$configureObjectMapperModules$4(JacksonObjectMapperProvider.scala:242)
[error]     at akka.serialization.jackson.JacksonObjectMapperProvider$.$anonfun$configureObjectMapperModules$4$adapted(JacksonObjectMapperProvider.scala:241)
[error]     at scala.collection.immutable.List.foreach(List.scala:333)
[error]     at akka.serialization.jackson.JacksonObjectMapperProvider$.configureObjectMapperModules(JacksonObjectMapperProvider.scala:241)
[error]     at akka.serialization.jackson.JacksonObjectMapperProvider$.createObjectMapper(JacksonObjectMapperProvider.scala:265)
[error]     at akka.serialization.jackson.JacksonObjectMapperProvider.create(JacksonObjectMapperProvider.scala:359)
[error]     at akka.serialization.jackson.JacksonObjectMapperProvider.$anonfun$getOrCreate$1(JacksonObjectMapperProvider.scala:317)
[error]     at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
[error]     at akka.serialization.jackson.JacksonObjectMapperProvider.getOrCreate(JacksonObjectMapperProvider.scala:317)
[error]     at akka.serialization.jackson.JacksonJsonSerializer.<init>(JacksonSerializer.scala:141)
[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 akka.actor.ReflectiveDynamicAccess.$anonfun$createInstanceFor$1(ReflectiveDynamicAccess.scala:40)
[error]     at scala.util.Try$.apply(Try.scala:210)
[error]     at akka.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:35)
[error]     at akka.actor.ReflectiveDynamicAccess.$anonfun$createInstanceFor$5(ReflectiveDynamicAccess.scala:48)
[error]     at scala.util.Success.flatMap(Try.scala:258)
[error]     at akka.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:47)
[error]     at akka.serialization.Serialization$$anonfun$serializerOf$1$$anonfun$applyOrElse$1.applyOrElse(Serialization.scala:396)
[error]     at akka.serialization.Serialization$$anonfun$serializerOf$1$$anonfun$applyOrElse$1.applyOrElse(Serialization.scala:392)
[error]     at scala.util.Failure.recoverWith(Try.scala:240)
[error]     at akka.serialization.Serialization$$anonfun$serializerOf$1.applyOrElse(Serialization.scala:392)
[error]     at akka.serialization.Serialization$$anonfun$serializerOf$1.applyOrElse(Serialization.scala:390)
[error]     at scala.util.Failure.recoverWith(Try.scala:240)
[error]     at akka.serialization.Serialization.serializerOf(Serialization.scala:390)
[error]     at akka.serialization.Serialization.$anonfun$serializers$2(Serialization.scala:424)
[error]     at scala.collection.Iterator$$anon$9.next(Iterator.scala:575)
[error]     at scala.collection.immutable.HashMapBuilder.addAll(HashMap.scala:2360)
[error]     at scala.collection.immutable.HashMap$.from(HashMap.scala:2182)
[error]     at scala.collection.immutable.HashMap$.from(HashMap.scala:2158)
[error]     at scala.collection.MapOps$WithFilter.map(Map.scala:348)
[error]     at akka.serialization.Serialization.<init>(Serialization.scala:424)
[error]     at akka.serialization.SerializationExtension$.createExtension(SerializationExtension.scala:18)
[error]     at akka.serialization.SerializationExtension$.createExtension(SerializationExtension.scala:14)
[error]     at akka.actor.ActorSystemImpl.registerExtension(ActorSystem.scala:1158)
[error]     at akka.actor.ActorSystemImpl.$anonfun$loadExtensions$1(ActorSystem.scala:1201)
[error]     at scala.collection.immutable.Vector.foreach(Vector.scala:1856)
[error]     at akka.actor.ActorSystemImpl.loadExtensions$1(ActorSystem.scala:1195)
[error]     at akka.actor.ActorSystemImpl.loadExtensions(ActorSystem.scala:1214)
[error]     at akka.actor.ActorSystemImpl.liftedTree2$1(ActorSystem.scala:1035)
[error]     at akka.actor.ActorSystemImpl._start$lzycompute(ActorSystem.scala:1022)
[error]     at akka.actor.ActorSystemImpl._start(ActorSystem.scala:1022)
[error]     at akka.actor.ActorSystemImpl.start(ActorSystem.scala:1045)
[error]     at akka.actor.ActorSystem$.apply(ActorSystem.scala:272)
[error]     at akka.actor.ActorSystem$.apply(ActorSystem.scala:316)
[error]     at akka.actor.ActorSystem$.apply(ActorSystem.scala:290)
[error]     at play.core.server.DevServerStart$.$anonfun$mainDev$1(DevServerStart.scala:291)
[error]     at play.utils.Threads$.withContextClassLoader(Threads.scala:22)
[error]     at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:76)
[error]     at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala:50)
[error]     at play.core.server.DevServerStart.mainDevHttpMode(DevServerStart.scala)
[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:306)
[error]     at play.sbt.run.PlayRun$.devModeServer$lzycompute$1(PlayRun.scala:100)
[error]     at play.sbt.run.PlayRun$.devModeServer$1(PlayRun.scala:83)
[error]     at play.sbt.run.PlayRun$.$anonfun$playRunTask$3(PlayRun.scala:107)
[error]     at play.sbt.run.PlayRun$.$anonfun$playRunTask$3$adapted(PlayRun.scala:67)
[error]     at scala.Function1.$anonfun$compose$1(Function1.scala:49)

Теперь мой вопрос заключается не только в том, как мне это исправить? Это больше похоже на то, как мне понять, как это исправить, помимо вопроса в StackOverflow...

Так чья это проблема? (Кроме моего прямо сейчас)

Я попытался понизить версию Scala на пару ступеней, иногда это помогает, но здесь нет радости. Я не хочу перематывать номера основных версий назад, если это на самом деле не требуется.

Есть ли лучший способ начать проект, который обходит некоторые из них?

Версия Scala: (build.sbt)

scalaVersion := "2.13.6" 

Игровая версия: (plugins.sbt)

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")

Версия SBT: (build.properties)

sbt.version=1.5.2

Java-версия:

[info] welcome to sbt 1.5.2 (Amazon.com Inc. Java 11.0.9.1)

К сожалению, недостаточно ресурсов для создания правильного тега playframework playframework-2.8

Я редактирую этот вопрос, так как StackOverflow задал другой вопрос (Есть ли способ остановить Scala 2.12, ломающий средство сопоставления объектов Джексона?) помогло решить проблему, а затем пометило это как дубликат. Это НЕ дубликат, поскольку контекст имеет значение, и этот вопрос не ответил на мою проблему, он просто указал возможный путь к решению. Более того, принятый ответ на этот вопрос на самом деле НЕ ПРОШЕЛ в этом контексте. Просто пытаюсь помочь другим с той же проблемой, не тратя столько времени, как я...


person Techmag    schedule 16.06.2021    source источник
comment
Я действительно нашел это и попытался добавить запись в надежде, что это может помочь: но без радости. Я думал, что помню, как он загружался, но это не решило проблему, поэтому я прокомментировал это, однако я только что повторил попытку, и это приводит к этому: ResolveException: Error downloading com.fasterxml.jackson.module:jackson-module-scala_2.13:2.8.8 через это: https://repo1.maven.org/maven2/com/fasterxml/jackson/module/jackson-module-scala_2.13/2.8.8/jackson-module-scala_2.13-2.8.8.pom   -  person Techmag    schedule 17.06.2021
comment
Проверка mvnrepository.com/artifact/com.fasterxml.jackson.module / Я вижу, что это идет только к 2.12.3, и я недостаточно знаю о том, что я не знаю, что делать с этим в этом контексте.   -  person Techmag    schedule 17.06.2021
comment
А! Это сработало: "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.12.3"   -  person Techmag    schedule 17.06.2021
comment
Должен ли я предположить, что, поскольку эта последняя версия библиотеки установлена, другие пакеты просто используют эту версию и не пытаются ссылаться на свои зависимости? Означает ли это, что ПОРЯДОК зависимостей библиотеки имеет значение? Быстрый тест показывает, что это не важно, поэтому, по-видимому, происходит полное сканирование до того, как произойдет более глубокое погружение в зависимости?   -  person Techmag    schedule 17.06.2021
comment
Я бы рекомендовал запустить sbt dependencyBrowseTree, чтобы определить, откуда берутся разные версии Джексона, и убедиться, что у вас есть только версия 2.11.x (возможно, добавив dependencyOverrides, если это необходимо)   -  person Gaël J    schedule 17.06.2021
comment
Кажется, это sbt, а затем dependencyTree в версии, которую я использую, и да, я вижу выселения — спасибо!   -  person Techmag    schedule 17.06.2021