【发布时间】:2021-06-16 17:15:55
【问题描述】:
我正在更新一个旧的 Play 项目并升级到最新版本的 Play,但我在使用 swagger 时遇到了一些问题。
我收到此错误,我不知道如何解决:
Error injecting constructor, java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.introspect.AnnotatedMember.getType(Lcom/fasterxml/jackson/databind/type/TypeBindings;)Lcom/fasterxml/jackson/databind/JavaType;
at play.modules.swagger.SwaggerPluginImpl.<init>(SwaggerPlugin.scala:35)
while locating play.modules.swagger.SwaggerPluginImpl
at play.modules.swagger.SwaggerModule.bindings(SwaggerModule.scala:11):
Binding(interface play.modules.swagger.SwaggerPlugin to ConstructionTarget(class play.modules.swagger.SwaggerPluginImpl) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$4)
while locating play.modules.swagger.SwaggerPlugin
Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.introspect.AnnotatedMember.getType(Lcom/fasterxml/jackson/databind/type/TypeBindings;)Lcom/fasterxml/jackson/databind/JavaType;
at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:424)
at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:202)
at io.swagger.scala.converter.SwaggerScalaModelConverter.resolve(SwaggerScalaModelConverter.scala:90)
我的配置文件如下:
build.sbt
name := """accepter"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(SbtPlugin, PlayJava, PlayEbean)
scalaVersion := "2.12.12"
retrieveManaged := true
libraryDependencies ++= Seq(
javaJdbc,
javaWs,
filters,
ws,
guice,
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.12.2",
"io.swagger" %% "swagger-play2" % "1.7.1",
"com.h2database" % "h2" % "1.4.200",
"org.mariadb.jdbc" % "mariadb-java-client" % "2.7.3",
"com.amazonaws" % "aws-java-sdk-sns" % "1.12.6",
"com.typesafe.play" %% "play-ahc-ws-standalone" % "2.1.3",
"com.typesafe.play" %% "play-ws" % "2.8.8",
"com.google.inject" % "guice" % "4.2.3",
"com.typesafe.play" %% "play-guice" % "2.8.8"
)
EclipseKeys.preTasks := Seq(compile in Compile)
EclipseKeys.projectFlavor := EclipseProjectFlavor.Java
EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources)
Test / javaOptions += "-Dconfig.file=conf/application.test.conf"
plugins.sbt
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.2")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.2")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.10")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.2")
addSbtPlugin("org.irundaia.sbt" % "sbt-sassify" % "1.5.1")
// Play enhancer - this automatically generates getters/setters for public fields
// and rewrites accessors of these fields to use the getters/setters. Remove this
// plugin if you prefer not to have this feature, or disable on a per project
// basis using disablePlugins(PlayEnhancer) in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.2.2")
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "6.0.0")
有谁知道什么可能有帮助,或者错误可能出在哪里?
【问题讨论】:
-
swagger-play2 1.7.1 已有 2 年历史,而 jackson-module-scala 是 2021 年的,因此它们似乎不再兼容。而且您似乎也错过了 swagger-play2 已移至新软件包(请参阅此处的消息 mvnrepository.com/artifact/io.swagger/swagger-play2)。试试那些,例如mvnrepository.com/artifact/io.swagger.core.v3/swagger-core。
-
swagger-play2 从那时起没有新版本,并且与 OpenAPI v3 不兼容,但这不是这里的主要阻止程序
标签: java playframework jackson swagger