我想使用java agant将Scala应用程序( Kestrel ,http://robey.github.com/kestrel)与NewRelic集成,但失败并显示错误
sh scripts/devel.sh
Starting kestrel in development mode...
Mar 28, 2013 18:15:15 +0800 NewRelic 1 INFO: Agent is using Logback
Mar 28, 2013 18:15:15 +0800 NewRelic 1 INFO: Loading configuration file "/tmp/newrelic.yml"
Mar 28, 2013 6:15:24 PM java.util.logging.LogManager$RootLogger log
FATAL: Error in config file: %s com.twitter.util.Eval$CompilerException: Compiler exception error: line 1: object twitter is not a member of package com
import com.twitter.conversions.storage._
^ at com.twitter.util.Eval$StringCompiler.apply(Eval.scala:533)
at com.twitter.util.Eval$StringCompiler$$anonfun$apply$3.apply(Eval.scala:544)
at com.twitter.util.Eval$StringCompiler$$anonfun$apply$3.apply(Eval.scala:543)
at scala.Option.getOrElse(Option.scala:108)
at com.twitter.util.Eval$StringCompiler.apply(Eval.scala:543)
at com.twitter.util.Eval.applyProcessed(Eval.scala:196) at com.twitter.util.Eval.apply(Eval.scala:167) at com.twitter.ostrich.admin.RuntimeEnvironment.loadConfig(RuntimeEnvironment.scala:230)
at com.twitter.ostrich.admin.RuntimeEnvironment.loadRuntimeConfig(RuntimeEnvironment.scala:256)
at net.lag.kestrel.Kestrel$.main(Kestrel.scala:307) at net.lag.kestrel.Kestrel.main(Kestrel.scala)
Mar 28, 2013 6:15:24 PM java.util.logging.LogManager$RootLogger log
FATAL: error: line 1: object twitter is not a member of package com
import com.twitter.conversions.storage._
重现的步骤:
编辑scripts / devel.sh,添加javaagent标志
java -server -Xmx1024m -Dstage = development -Dnewrelic.config.file = / tmp / newrelic / newrelic.yml -javaagent:/tmp/newrelic/newrelic.jar -jar“$ ROOT_DIR”/kestrel_2.9.2-2.4 .1.jar 4.运行scripts / devel.sh,您将看到上述错误。
有什么想法吗?实际上我已经开了一张去NewRelic的门票,但整整一个月没有得到他们的回答,我希望社区和@lewis-cirne(NewRelic首席执行官)可以屏蔽这个问题
答案 0 :(得分:2)
New Relic Java Agent中没有Scala支持 https://newrelic.com/docs/java/new-relic-for-java
答案 1 :(得分:2)
随着2013年5月29日发布的New Relic Java代理版本2.19.0,Scala得到了大量支持,并且它在Play 2.0和2.1框架中得到了应用。你遇到的问题并不是直接与Scala有关。 Kestrel使用eval导致运行时编译。 New Relic的代理程序旨在使用预编译的Java字节码,因此不支持eval过程。
答案 2 :(得分:1)
即使New Relic支持Scala(我听说可能即将推出),Kestrel使用eval似乎是一个更难以破解的难题。是否有一个Kestrel的设置,它不使用eval或是烘焙过程?