scala - Lagom 和 Kamon:类加载错误
问题描述
我们正在使用 Kamon 来检测我们所有的微服务,其中一些使用 Lagom,另一些使用 akka-http。
我们的 Lagom 微服务正在使用 sbt-native-packager 创建一个 zip 文件,一旦解压缩,它将在我们的服务器中运行。而 akka-http 使用的是 sbt-pack。
我们怀疑 sbt-native-packager 引入了一些类加载器魔法。
JVM 在正确加载 aspectj-weaver 代理的情况下运行,
设置JAVA_OPTS
与-javaagent:/path/to/aspectjweaver-1.9.1.jar
我们使用 scala 2.11.12
但是在我们所有的 Lagom 微服务中,我们都会收到以下错误
Exception in thread "main" java.lang.NoSuchMethodError: kamon.scala.instrumentation.FutureInstrumentation.aspectOf()Lkamon/scala/instrumentation/FutureInstrumentation;
at scala.concurrent.impl.CallbackRunnable.<init>(Promise.scala:32)
at scala.concurrent.impl.Promise$DefaultPromise.onComplete(Promise.scala:273)
at akka.actor.ActorSystemImpl$TerminationCallbacks.<init>(ActorSystem.scala:1008)
at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:800)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:246)
at com.lightbend.lagom.scaladsl.server.ActorSystemProvider$.start(LagomApplicationLoader.scala:268)
at com.lightbend.lagom.scaladsl.server.LagomApplication.actorSystem$lzycompute(LagomApplicationLoader.scala:239)
at com.lightbend.lagom.scaladsl.server.LagomApplication.actorSystem(LagomApplicationLoader.scala:238)
at play.api.BuiltInComponents$class.materializer(Application.scala:327)
at play.api.BuiltInComponentsFromContext.materializer$lzycompute(ApplicationLoader.scala:122)
at play.api.BuiltInComponentsFromContext.materializer(ApplicationLoader.scala:122)
at com.lightbend.lagom.scaladsl.server.LagomServerComponents$class.lagomServerBuilder(LagomServer.scala:84)
at com.lightbend.lagom.scaladsl.server.LagomApplication.lagomServerBuilder$lzycompute(LagomApplicationLoader.scala:222)
at com.lightbend.lagom.scaladsl.server.LagomApplication.lagomServerBuilder(LagomApplicationLoader.scala:222)
at com.lightbend.lagom.scaladsl.server.LagomApplication.<init>(LagomApplicationLoader.scala:244)
at com.lightbend.lagom.scaladsl.server.LagomApplicationLoader.load(LagomApplicationLoader.scala:78)
at play.core.server.ProdServerStart$.start(ProdServerStart.scala:51)
at play.core.server.ProdServerStart$.main(ProdServerStart.scala:25)
at play.core.server.ProdServerStart.main(ProdServerStart.scala)
这是另一个略有不同的堆栈跟踪
java.lang.NoSuchMethodError: kamon.logback.instrumentation.AsyncAppenderInstrumentation.aspectOf()Lkamon/logback/instrumentation/AsyncAppenderInstrumentation;
at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:47)
at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
at ch.qos.logback.classic.Logger.info(Logger.java:579)
at akka.event.slf4j.Slf4jLogger$$anonfun$receive$1.applyOrElse(Slf4jLogger.scala:92)
at akka.actor.Actor$class.aroundReceive(Actor.scala:517)
at akka.event.slf4j.Slf4jLogger.aroundReceive(Slf4jLogger.scala:54)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:590)
at akka.actor.ActorCell.invoke(ActorCell.scala:559)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
at akka.dispatch.Mailbox.run(Mailbox.scala:224)
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
有谁知道为什么?
这是一个向您展示问题的项目
解决方案
推荐阅读
- javascript - Javascript函数被截断?
- reactjs - 使用 refs 解耦回调安全吗?
- c# - 如何使用 System.CommandLine 绑定 NodaTime.Duration?
- android - 小米 Violet 上 LineageOS 在中国的定位问题
- reactjs - 自动销毁 React 构建
- python - 在 Python 中构建一个大型(18m 键)查找表
- ubuntu - 如何在 ubuntu 20.04 上安装 systemtap?
- r - 合并命令给出错误:无法分配大小为 54.2 Gb 的向量
- wordpress - Cloudflare argo 隧道在 nginx 中出现错误的网关错误
- matplotlib - 嵌入 tkinter 时使用 matplotlib 光标小部件