Ресурс application.conf не найден для приложения kamon play
Возникли проблемы с моим приложением play-akka, которое я пытаюсь отслеживать с помощью Kamon.io. У меня возникли проблемы с этим, когда я сказал, что я не использую kamon.start() и после того, как нашел работу вокруг javaOptions в среде выполнения:= Seq("-Dkamon.auto-start=true"); Теперь я нахожу себя с ошибкой ресурса не найден для моего файла application.conf.
Когда я не запускаю aspectjweaver, kamon выдает другую ошибку, но мое приложение будет работать. Вот ошибка, которую я получаю, если бы кто-нибудь мог помочь, это очень помогло бы мне! Спасибо, парни!
[info] Running Play application with Aspectj Weaver.
--- (Running the application, auto-reloading is enabled) ---
[WeavingURLClassLoader] warning javax.* types are not being woven because the we
aver option '-Xset:weaveJavaxPackages=true' has not been specified
com.typesafe.config.ConfigException$IO: application.conf: java.io.IOException: r
esource not found on classpath: application.conf
at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:188)
at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:174)
at com.typesafe.config.impl.Parseable.parse(Parseable.java:299)
at com.typesafe.config.ConfigFactory.parseResources(ConfigFactory.java:1
002)
at com.typesafe.config.ConfigFactory.parseResources(ConfigFactory.java:9
30)
at com.typesafe.config.ConfigFactory.parseApplicationConfig(ConfigFactor
y.java:251)
at com.typesafe.config.ConfigFactory.defaultApplication(ConfigFactory.ja
va:519)
at com.typesafe.config.ConfigFactory$1.call(ConfigFactory.java:305)
at com.typesafe.config.ConfigFactory$1.call(ConfigFactory.java:302)
at com.typesafe.config.impl.ConfigImpl$LoaderCache.getOrElseUpdate(Confi
gImpl.java:65)
at com.typesafe.config.impl.ConfigImpl.computeCachedConfig(ConfigImpl.ja
va:92)
at com.typesafe.config.ConfigFactory.load(ConfigFactory.java:302)
at com.typesafe.config.ConfigFactory.load(ConfigFactory.java:278)
at kamon.Kamon$.ifStarted(Kamon.scala:95)
at kamon.Kamon$.metrics(Kamon.scala:78)
at akka.kamon.instrumentation.LookupDataAware$LookupData$.apply$default$
3(DispatcherInstrumentation.scala:184)
at akka.kamon.instrumentation.DispatcherInstrumentation.aroundDispatcher
sLookup(DispatcherInstrumentation.scala:83)
at akka.dispatch.Dispatchers.lookup(Dispatchers.scala:81)
at akka.dispatch.Dispatchers.defaultGlobalDispatcher(Dispatchers.scala:7
1)
at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:599)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:142)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:126)
at play.api.libs.concurrent.ActorSystemProvider$.start(Akka.scala:291)
at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerSta
rt.scala:205)
at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerSta
rt.scala:61)
at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:60)
at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala
:50)
at play.core.server.DevServerStart.mainDevHttpMode(DevServerStart.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at play.runsupport.Reloader$.startDevMode(Reloader.scala:207)
at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun
$apply$3.devModeServer$lzycompute$1(PlayRun.scala:73)
at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun
$apply$3.play$sbt$run$PlayRun$$anonfun$$anonfun$$anonfun$$devModeServer$1(PlayRu
n.scala:73)
at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun
$apply$3.apply(PlayRun.scala:99)
at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun
$apply$3.apply(PlayRun.scala:52)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
Caused by: java.io.IOException: resource not found on classpath: application.con
f
at com.typesafe.config.impl.Parseable$ParseableResources.rawParseValue(P
arseable.java:735)
at com.typesafe.config.impl.Parseable$ParseableResources.rawParseValue(P
arseable.java:710)
at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:180)
at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:174)
at com.typesafe.config.impl.Parseable.parse(Parseable.java:299)
at com.typesafe.config.ConfigFactory.parseResources(ConfigFactory.java:1
002)
at com.typesafe.config.ConfigFactory.parseResources(ConfigFactory.java:9
30)
at com.typesafe.config.ConfigFactory.parseApplicationConfig(ConfigFactor
y.java:251)
at com.typesafe.config.ConfigFactory.defaultApplication(ConfigFactory.ja
va:519)
at com.typesafe.config.ConfigFactory$1.call(ConfigFactory.java:305)
at com.typesafe.config.ConfigFactory$1.call(ConfigFactory.java:302)
at com.typesafe.config.impl.ConfigImpl$LoaderCache.getOrElseUpdate(Confi
gImpl.java:65)
at com.typesafe.config.impl.ConfigImpl.computeCachedConfig(ConfigImpl.ja
va:92)
at com.typesafe.config.ConfigFactory.load(ConfigFactory.java:302)
at com.typesafe.config.ConfigFactory.load(ConfigFactory.java:278)
at kamon.Kamon$.ifStarted(Kamon.scala:95)
at kamon.Kamon$.metrics(Kamon.scala:78)
at akka.kamon.instrumentation.LookupDataAware$LookupData$.apply$default$
3(DispatcherInstrumentation.scala:184)
at akka.kamon.instrumentation.DispatcherInstrumentation.aroundDispatcher
sLookup(DispatcherInstrumentation.scala:83)
at akka.dispatch.Dispatchers.lookup(Dispatchers.scala:81)
at akka.dispatch.Dispatchers.defaultGlobalDispatcher(Dispatchers.scala:7
1)
at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:599)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:142)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:126)
at play.api.libs.concurrent.ActorSystemProvider$.start(Akka.scala:291)
at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerSta
rt.scala:205)
at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerSta
rt.scala:61)
at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:60)
at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala
:50)
at play.core.server.DevServerStart.mainDevHttpMode(DevServerStart.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at play.runsupport.Reloader$.startDevMode(Reloader.scala:207)
at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun
$apply$3.devModeServer$lzycompute$1(PlayRun.scala:73)
at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun
$apply$3.play$sbt$run$PlayRun$$anonfun$$anonfun$$anonfun$$devModeServer$1(PlayRu
n.scala:73)
at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun
$apply$3.apply(PlayRun.scala:99)
at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun
$apply$3.apply(PlayRun.scala:52)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
[trace] Stack trace suppressed: run last aspectj-runner:run for the full output.
[error] (aspectj-runner:run) java.lang.reflect.InvocationTargetException
[error] Total time: 13 s, completed 3-Nov-2015 3:18:25 PM
4 ответа
Для Play 2.5 и Kamon 0.6.2 работает следующий подход. Вам нужно пройти application.conf
путь через системное свойство, например:
sbt "webapp/aspectj-runner:run" -Dconfig.file=webapp/conf/application.conf
Важно уважать пути. В приведенном выше примере из моего текущего проекта приложение Play является проектом в многопроектной сборке SBT и поэтому находится в подкаталоге, называемом "webapp". Если вы работаете с простой сборкой одного проекта, вы бы назвали это так:
sbt "aspectj-runner:run" -Dconfig.file=conf/application.conf
Похоже, что эта проблема будет решена в следующем выпуске kamon (v.0.6.0).
Хотя есть обходной путь. Я нашел это здесь: https://groups.google.com/forum/
Добавьте "я" в список. Это как-то меняет то, как Play находит определенные вещи.
У меня была похожая проблема, и в конце я обнаружил, что не предоставляю Akka веб-контекст. В контроллере вы должны убедиться, что передали контекст при вызове веб-зависимого метода. Ниже приведен пример Java:
CompletableFuture.supplyAsync(() -> {
}, MyHttpExecutionContext.current());
Без веб-контекста файлы не могут быть найдены.