I face a issue while trying to get a new instance of a database, but the problem is that sometimes it does inject a database but other when I re compile the project it fails, it really unpredictable fail. i tried that with guice and works it never get a error.
looking a the DBModule.scala on play source code, I see two key object the first one is a DBApi which will be "collecting" the configured databases. So you could inject DBApi and you will always get a Instance of it with or without a database on it.
But if you inspect the content of such object you will see that it do not have any databases.
I want to know if some one face the same problem or have any ideas of what could be happening here.
Cristian.
PD: here is the stack trace just in case.
play.api.UnexpectedException: Unexpected exception[IllegalArgumentException: Could not find database for default]
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:165) ~[play-server_2.11-2.4.2.jar:2.4.2]
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:121) ~[play-server_2.11-2.4.2.jar:2.4.2]
at scala.Option.map(Option.scala:146) ~[scala-library-2.11.6.jar:na]
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:121) ~[play-server_2.11-2.4.2.jar:2.4.2]
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:119) ~[play-server_2.11-2.4.2.jar:2.4.2]
at scala.util.Success.flatMap(Try.scala:230) ~[scala-library-2.11.6.jar:na]
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:119) ~[play-server_2.11-2.4.2.jar:2.4.2]
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:111) ~[play-server_2.11-2.4.2.jar:2.4.2]
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) ~[scala-library-2.11.6.jar:na]
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) ~[scala-library-2.11.6.jar:na]
at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402) ~[na:1.8.0_45]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[na:1.8.0_45]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[na:1.8.0_45]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1689) ~[na:1.8.0_45]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) ~[na:1.8.0_45]
Caused by: java.lang.IllegalArgumentException: Could not find database for default
at play.api.db.DefaultDBApi$$anonfun$database$1.apply(DefaultDBApi.scala:35) ~[play-jdbc_2.11-2.4.2.jar:2.4.2]
at play.api.db.DefaultDBApi$$anonfun$database$1.apply(DefaultDBApi.scala:35) ~[play-jdbc_2.11-2.4.2.jar:2.4.2]
at scala.collection.MapLike$class.getOrElse(MapLike.scala:128) ~[scala-library-2.11.6.jar:na]
at scala.collection.AbstractMap.getOrElse(Map.scala:59) ~[scala-library-2.11.6.jar:na]
at play.api.db.DefaultDBApi.database(DefaultDBApi.scala:35) ~[play-jdbc_2.11-2.4.2.jar:2.4.2]
at play.api.db.NamedDatabaseProvider.get$lzycompute(DBModule.scala:82) ~[play-jdbc_2.11-2.4.2.jar:2.4.2]
at play.api.db.NamedDatabaseProvider.get(DBModule.scala:82) ~[play-jdbc_2.11-2.4.2.jar:2.4.2]
at play.api.db.NamedDatabaseProvider.get(DBModule.scala:80) ~[play-jdbc_2.11-2.4.2.jar:2.4.2]
at scaldi.play.ScaldiBuilder$$anonfun$6$$anonfun$apply$1$$anonfun$10.apply(ScaldiBuilder.scala:206) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.jsr330.AnnotationBinding$$anonfun$getInstance$3.apply(AnnotationBinding.scala:113) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$getInstance$3.apply(AnnotationBinding.scala:113) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scala.Option.map(Option.scala:146) ~[scala-library-2.11.6.jar:na]
at scaldi.jsr330.AnnotationBinding.getInstance(AnnotationBinding.scala:113) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding.get(AnnotationBinding.scala:85) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.Binding$$anon$1.get(Binding.scala:23) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.Injectable$$anonfun$injectWithDefault$1.apply(Injectable.scala:43) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.Injectable$$anonfun$injectWithDefault$1.apply(Injectable.scala:43) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scala.Option.flatMap(Option.scala:171) ~[scala-library-2.11.6.jar:na]
at scaldi.Injectable$class.injectWithDefault(Injectable.scala:43) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.play.ScaldiBuilder$.injectWithDefault(ScaldiBuilder.scala:128) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiBuilder$$anonfun$6$$anonfun$apply$1$$anonfun$apply$6.apply(ScaldiBuilder.scala:197) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.ProviderBinding.target(Binding.scala:108) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.ProviderBinding.get(Binding.scala:111) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.ProviderBinding.get(Binding.scala:102) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.Binding$$anon$1.get(Binding.scala:23) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.jsr330.AnnotationBinding$$anonfun$scaldi$jsr330$AnnotationBinding$$injectSymbol$2.apply(AnnotationBinding.scala:171) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$scaldi$jsr330$AnnotationBinding$$injectSymbol$2.apply(AnnotationBinding.scala:171) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scala.Option.flatMap(Option.scala:171) ~[scala-library-2.11.6.jar:na]
at scaldi.jsr330.AnnotationBinding.scaldi$jsr330$AnnotationBinding$$injectSymbol(AnnotationBinding.scala:171) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$22.apply(AnnotationBinding.scala:132) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$22.apply(AnnotationBinding.scala:132) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scala.collection.immutable.List.map(List.scala:273) ~[scala-library-2.11.6.jar:na]
at scaldi.jsr330.AnnotationBinding.scaldi$jsr330$AnnotationBinding$$createNewInstance(AnnotationBinding.scala:132) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$2$$anonfun$apply$2.apply(AnnotationBinding.scala:41) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$2$$anonfun$apply$2.apply(AnnotationBinding.scala:41) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding.initNewInstance(AnnotationBinding.scala:119) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding.getInstance(AnnotationBinding.scala:111) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding.get(AnnotationBinding.scala:85) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.Binding$$anon$1.get(Binding.scala:23) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.jsr330.AnnotationBinding$$anonfun$scaldi$jsr330$AnnotationBinding$$injectSymbol$2.apply(AnnotationBinding.scala:171) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$scaldi$jsr330$AnnotationBinding$$injectSymbol$2.apply(AnnotationBinding.scala:171) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scala.Option.flatMap(Option.scala:171) ~[scala-library-2.11.6.jar:na]
at scaldi.jsr330.AnnotationBinding.scaldi$jsr330$AnnotationBinding$$injectSymbol(AnnotationBinding.scala:171) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$22.apply(AnnotationBinding.scala:132) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$22.apply(AnnotationBinding.scala:132) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scala.collection.immutable.List.map(List.scala:277) ~[scala-library-2.11.6.jar:na]
at scaldi.jsr330.AnnotationBinding.scaldi$jsr330$AnnotationBinding$$createNewInstance(AnnotationBinding.scala:132) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$2$$anonfun$apply$2.apply(AnnotationBinding.scala:41) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding$$anonfun$2$$anonfun$apply$2.apply(AnnotationBinding.scala:41) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding.initNewInstance(AnnotationBinding.scala:119) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding.getInstance(AnnotationBinding.scala:111) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.jsr330.AnnotationBinding.get(AnnotationBinding.scala:85) ~[scaldi-jsr330_2.11-0.5.7.jar:0.5.7]
at scaldi.Binding$$anon$1.get(Binding.scala:23) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1$$anonfun$apply$2.apply(ScaldiInjector.scala:42) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1$$anonfun$apply$2.apply(ScaldiInjector.scala:42) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scala.Option.map(Option.scala:146) ~[scala-library-2.11.6.jar:na]
at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1.apply(ScaldiInjector.scala:42) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1.apply(ScaldiInjector.scala:38) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at play.utils.Threads$.withContextClassLoader(Threads.scala:21) ~[play_2.11-2.4.2.jar:2.4.2]
at scaldi.play.ScaldiInjector.scaldi$play$ScaldiInjector$$getActualBinding(ScaldiInjector.scala:38) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector$$anonfun$instanceOf$1.apply(ScaldiInjector.scala:23) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector$$anonfun$instanceOf$1.apply(ScaldiInjector.scala:22) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scala.Option.getOrElse(Option.scala:121) ~[scala-library-2.11.6.jar:na]
at scaldi.play.ScaldiInjector.instanceOf(ScaldiInjector.scala:22) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector.instanceOf(ScaldiInjector.scala:18) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at play.api.inject.RoutesProvider$$anonfun$2.apply(BuiltinModule.scala:67) ~[play_2.11-2.4.2.jar:2.4.2]
at play.api.inject.RoutesProvider$$anonfun$2.apply(BuiltinModule.scala:67) ~[play_2.11-2.4.2.jar:2.4.2]
at scala.Option.fold(Option.scala:158) ~[scala-library-2.11.6.jar:na]
at play.api.inject.RoutesProvider.get$lzycompute(BuiltinModule.scala:67) ~[play_2.11-2.4.2.jar:2.4.2]
at play.api.inject.RoutesProvider.get(BuiltinModule.scala:63) ~[play_2.11-2.4.2.jar:2.4.2]
at play.api.inject.RoutesProvider.get(BuiltinModule.scala:62) ~[play_2.11-2.4.2.jar:2.4.2]
at scaldi.play.ScaldiBuilder$$anonfun$6$$anonfun$apply$1$$anonfun$apply$12.apply(ScaldiBuilder.scala:219) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.ProviderBinding.target(Binding.scala:108) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.ProviderBinding.get(Binding.scala:111) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.ProviderBinding.get(Binding.scala:102) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.Binding$$anon$1.get(Binding.scala:23) ~[scaldi_2.11-0.5.6.jar:0.5.6]
at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1$$anonfun$apply$2.apply(ScaldiInjector.scala:42) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1$$anonfun$apply$2.apply(ScaldiInjector.scala:42) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scala.Option.map(Option.scala:146) ~[scala-library-2.11.6.jar:na]
at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1.apply(ScaldiInjector.scala:42) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector$$anonfun$scaldi$play$ScaldiInjector$$getActualBinding$1.apply(ScaldiInjector.scala:38) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at play.utils.Threads$.withContextClassLoader(Threads.scala:21) ~[play_2.11-2.4.2.jar:2.4.2]
at scaldi.play.ScaldiInjector.scaldi$play$ScaldiInjector$$getActualBinding(ScaldiInjector.scala:38) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector$$anonfun$instanceOf$1.apply(ScaldiInjector.scala:23) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector$$anonfun$instanceOf$1.apply(ScaldiInjector.scala:22) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scala.Option.getOrElse(Option.scala:121) ~[scala-library-2.11.6.jar:na]
at scaldi.play.ScaldiInjector.instanceOf(ScaldiInjector.scala:22) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector.instanceOf(ScaldiInjector.scala:18) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at scaldi.play.ScaldiInjector.instanceOf(ScaldiInjector.scala:15) ~[scaldi-play_2.11-0.5.8.jar:0.5.8]
at play.api.Application$class.routes(Application.scala:111) ~[play_2.11-2.4.2.jar:2.4.2]
at play.api.DefaultApplication.routes(Application.scala:240) ~[play_2.11-2.4.2.jar:2.4.2]
at
play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:90) ~[play_2.11-2.4.2.jar:2.4.2]
at
play.api.Play$$anonfun$start$1.apply(Play.scala:87) ~[play_2.11-2.4.2.jar:2.4.2]
at
play.api.Play$$anonfun$start$1.apply(Play.scala:87) ~[play_2.11-2.4.2.jar:2.4.2]
at play.utils.Threads$.withContextClassLoader(Threads.scala:21) ~[play_2.11-2.4.2.jar:2.4.2]
at
play.api.Play$.start(Play.scala:87) ~[play_2.11-2.4.2.jar:2.4.2]
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:156) ~[play-server_2.11-2.4.2.jar:2.4.2]
... 14 common frames omitted