【问题标题】:AbstractMethodError while running finch/finagle application运行 finch/finagle 应用程序时出现 AbstractMethodError
【发布时间】:2017-04-23 02:41:13
【问题描述】:

我正在尝试运行我的应用程序并收到此错误:

java.lang.AbstractMethodError: com.twitter.finagle.stats.MetricsStatsReceiver

我的代码是:

object Main extends TwitterServer {

  implicit val objectMapper: ObjectMapper = ObjectProvider.objectMapper

  val appConf = ConfigFactory.load()

  def main(): Unit = {
    statsReceiver.counter("posts")
    statsReceiver.counter("login")
    // configuration
    val port = appConf.getInt("8090")
    val db = new CommDb()
    val service = Api.makeService(db)
val server = Http.serve(":8080", service) //creates service

  def close(): Future[Unit] = {
    Await.ready(server.close())
  }
    Await.ready(server)
  }
}

这可能是一个错误,所以我应该使用哪个版本的库,或者我可能只是切换到更稳定的 Web 服务库。

我看到其他人有同样的问题:

https://gist.github.com/edwelker/33e60108d62613434680ec13aa265611

更新

      "com.github.finagle" %% "finch-core" % "0.14.0",
      "com.github.finagle" %% "finch-circe" % "0.14.0",
      "com.tokbox" % "opentok-server-sdk" % "3.0.0-beta.2",
      "com.google.firebase" % "firebase-server-sdk" % "3.0.1",
  "org.scalatest" %% "scalatest" % "2.2.5" % "it,test",
"ch.qos.logback" % "logback-classic" % "1.1.7",
      "com.github.finagle" %% "finch-jackson" % "0.14.0",
      "com.github.finagle" %% "finch-test" % "0.14.0" % "it,test",
      "com.softwaremill.macwire" %% "macros" % "2.2.3" % "provided",
      "com.softwaremill.macwire" %% "util" % "2.2.3",
      "com.softwaremill.macwire" %% "proxy" % "2.2.3",
      "com.twitter" %% "finagle-stats" % "6.35.0",
      "com.twitter" %% "twitter-server" % "1.20.0",
      "com.twitter" %% "util-eval" % "6.34.0",
      "com.typesafe" % "config" % "1.3.0",
      "org.slf4j" % "slf4j-api" % "1.7.21",
      "org.slf4j" % "jul-to-slf4j" % "1.7.21",
      "org.slf4j" % "jcl-over-slf4j" % "1.7.21",
      "org.slf4j" % "log4j-over-slf4j" % "1.7.21",
      "org.scalactic" %% "scalactic" % "2.2.5" % "it,test",
      "org.scalacheck" %% "scalacheck" % "1.13.1" % "it,test",
      "ru.arkoit" %% "finchrich-controller" % "0.1.1"

【问题讨论】:

  • 那么,您使用的是哪个版本?其他依赖项是什么?一般来说,AbstractMethodError 表示编译期间和运行时位于类路径上的类之间存在不匹配。

标签: scala web-services finagle


【解决方案1】:

正如 Alexey 在他的评论中提到的,这是一个依赖不匹配问题。 sbt-dependency-graph 是一个有用的工具,可以确保您的所有库都依赖于相同的版本。

【讨论】:

  • 由于这个问题,我发现 Finch 太难使用,所以我切换回 Scalatra。也许有一天我可能会再试一次,因为它看起来很有希望,但我不喜欢与这些工具作斗争。但是,感谢您的回复。
猜你喜欢
  • 2019-03-02
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 2021-01-20
相关资源
最近更新 更多