Binding the Play Akka system in 2.4.x

34 views
Skip to first unread message

James Cain

unread,
Mar 29, 2016, 4:45:13 PM3/29/16
to scaldi
I'm having problems trying to binding the play akka system

bind[ActorSystem] to Play.current.actorSystem

I get the following error when it runs...

java.lang.RuntimeException: There is no started application

at scala.sys.package$.error(package.scala:27)

at play.api.Play$$anonfun$current$1.apply(Play.scala:71)

at play.api.Play$$anonfun$current$1.apply(Play.scala:71)

at scala.Option.getOrElse(Option.scala:121)

at play.api.Play$.current(Play.scala:71)

at com.placeable.modules.AppModule$$anonfun$25.apply(AppModule.scala:48)

at com.placeable.modules.AppModule$$anonfun$25.apply(AppModule.scala:48)

at scaldi.LazyBinding$$anonfun$target$2.apply(Binding.scala:180)

at scaldi.LazyBinding$$anonfun$target$2.apply(Binding.scala:180)

at scala.Option.map(Option.scala:146)

at scaldi.LazyBinding.target$lzycompute(Binding.scala:180)

at scaldi.LazyBinding.target(Binding.scala:180)

at scaldi.LazyBinding.get(Binding.scala:196)

at scaldi.Binding$$anon$1.get(Binding.scala:66)

at scaldi.jsr330.AnnotationBinding$$anonfun$scaldi$jsr330$AnnotationBinding$$injectSymbol$2.apply(AnnotationBinding.scala:171)

at scaldi.jsr330.AnnotationBinding$$anonfun$scaldi$jsr330$AnnotationBinding$$injectSymbol$2.apply(AnnotationBinding.scala:171)

at scala.Option.flatMap(Option.scala:171)

at scaldi.jsr330.AnnotationBinding.scaldi$jsr330$AnnotationBinding$$injectSymbol(AnnotationBinding.scala:171)

at scaldi.jsr330.AnnotationBinding$$anonfun$22.apply(AnnotationBinding.scala:132)

at scaldi.jsr330.AnnotationBinding$$anonfun$22.apply(AnnotationBinding.scala:132)

at scala.collection.immutable.List.map(List.scala:277)

at scaldi.jsr330.AnnotationBinding.scaldi$jsr330$AnnotationBinding$$createNewInstance(AnnotationBinding.scala:132)

at scaldi.jsr330.AnnotationBinding$$anonfun$2$$anonfun$apply$2.apply(AnnotationBinding.scala:41)

at scaldi.jsr330.AnnotationBinding$$anonfun$2$$anonfun$apply$2.apply(AnnotationBinding.scala:41)

at scaldi.jsr330.AnnotationBinding.initNewInstance(AnnotationBinding.scala:119)

at scaldi.jsr330.AnnotationBinding.getInstance(AnnotationBinding.scala:111)

at scaldi.jsr330.AnnotationBinding.get(AnnotationBinding.scala:85)

at scaldi.Binding$$anon$1.get(Binding.scala:66)

at scaldi.Injectable$$anonfun$injectWithDefault$1.apply(Injectable.scala:152)

at scaldi.Injectable$$anonfun$injectWithDefault$1.apply(Injectable.scala:152)

at scala.Option.flatMap(Option.scala:171)

at scaldi.Injectable$class.injectWithDefault(Injectable.scala:152)

at scaldi.play.ScaldiBuilder$.injectWithDefault(ScaldiBuilder.scala:128)

at scaldi.play.ScaldiBuilder$$anonfun$6$$anonfun$apply$1$$anonfun$apply$18.apply(ScaldiBuilder.scala:240)

at scaldi.ProviderBinding.target(Binding.scala:217)

at scaldi.ProviderBinding.get(Binding.scala:223)

at scaldi.ProviderBinding.get(Binding.scala:213)

at scaldi.Binding$$anon$1.get(Binding.scala:66)

at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1$$anonfun$apply$2.apply(ScaldiInjector.scala:42)

at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1$$anonfun$apply$2.apply(ScaldiInjector.scala:42)

at scala.Option.map(Option.scala:146)

at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1.apply(ScaldiInjector.scala:42)

at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1.apply(ScaldiInjector.scala:38)

at play.utils.Threads$.withContextClassLoader(Threads.scala:21)

at scaldi.play.ScaldiInjector.scaldi$play$ScaldiInjector$$getActualBinding(ScaldiInjector.scala:38)

at scaldi.play.ScaldiInjector$$anonfun$instanceOf$1.apply(ScaldiInjector.scala:23)

at scaldi.play.ScaldiInjector$$anonfun$instanceOf$1.apply(ScaldiInjector.scala:22)

at scala.Option.getOrElse(Option.scala:121)

at scaldi.play.ScaldiInjector.instanceOf(ScaldiInjector.scala:22)

at scaldi.play.ScaldiInjector.instanceOf(ScaldiInjector.scala:18)

at scaldi.play.ScaldiInjector.instanceOf(ScaldiInjector.scala:15)

at scaldi.play.ScaldiApplicationBuilder.build(ScaldiApplicationBuilder.scala:89)

at scaldi.play.ScaldiApplicationLoader.load(ScaldiApplicationLoader.scala:19)

at play.core.server.ProdServerStart$.start(ProdServerStart.scala:52)

at play.core.server.ProdServerStart$.main(ProdServerStart.scala:27)

at play.core.server.ProdServerStart.main(ProdServerStart.scala)



Can somebody point me in the right direction?

Thx Jay


Oleg Ilyenko

unread,
Mar 30, 2016, 5:51:34 AM3/30/16
to scaldi
You should avoid usage of `Play.current`. It's the way play works before 2.4.x and now it's deprecated in favour of dependency injection. Since you are using play 2.4, a binding for an `ActorSystem` (used by play) should be already available, so you can just inject it.

In order to avoid `Play.current` you can just inject an `Application` like this:

inject [Application]

Reply all
Reply to author
Forward
0 new messages