0

I tried to upgrade our applications which use Scaldi injection from Play 2.6.12 to Play 2.6.13. On all applications we run into the same problem.

It tries to instantiate an object of type '$$anon$1' or 'play.api.inject.BindingKey$$anon$1@5d807417' to be exact. This type obviously does not exist, so it does cause an error down in the Stack.

java.lang.ArrayIndexOutOfBoundsException: 1
at java.lang.reflect.Executable.getAllGenericParameterTypes(Executable.java:318)
at java.lang.reflect.Parameter.getParameterizedType(Parameter.java:201)
at scala.reflect.runtime.JavaMirrors$JavaMirror.$anonfun$jparamsAsScala$1(JavaMirrors.scala:1209)
at scala.reflect.runtime.JavaMirrors$JavaMirror.jparamsAsScala(JavaMirrors.scala:1203)
at scala.reflect.runtime.JavaMirrors$JavaMirror.jconstrAsScala1(JavaMirrors.scala:1190)
at scala.reflect.runtime.JavaMirrors$JavaMirror.$anonfun$jconstrAsScala$1(JavaMirrors.scala:1182)
at scala.reflect.runtime.JavaMirrors$JavaMirror.$anonfun$toScala$1(JavaMirrors.scala:98)
at scala.reflect.runtime.TwoWayCaches$TwoWayCache.$anonfun$toScala$1(TwoWayCaches.scala:38)
at scala.reflect.runtime.TwoWayCaches$TwoWayCache.toScala(TwoWayCaches.scala:34)
at scala.reflect.runtime.JavaMirrors$JavaMirror.toScala(JavaMirrors.scala:96)
at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jconstrAsScala(JavaMirrors.scala:1182)
at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter.$anonfun$completeRest$7(JavaMirrors.scala:789)
at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter.$anonfun$completeRest$4(JavaMirrors.scala:789)
at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter.$anonfun$completeRest$1(JavaMirrors.scala:797)
at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter.completeRest(JavaMirrors.scala:755)
at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter$LazyPolyType.complete(JavaMirrors.scala:804)
at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1535)
at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$7.scala$reflect$runtime$SynchronizedSymbols$SynchronizedSymbol$$super$info(SynchronizedSymbols.scala:173)
at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol.$anonfun$info$1(SynchronizedSymbols.scala:129)
at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol.info(SynchronizedSymbols.scala:125)
at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol.info$(SynchronizedSymbols.scala:129)
at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$7.info(SynchronizedSymbols.scala:173)
at scala.reflect.internal.Types$TypeRef.baseClasses(Types.scala:2304)
at scaldi.jsr330.AnnotationBinding.<init>(AnnotationBinding.scala:47)
at scaldi.play.ScaldiBuilder$.$anonfun$toScaldiBindings$2(ScaldiBuilder.scala:210)
at scala.collection.immutable.List.map(List.scala:283)
at scaldi.play.ScaldiBuilder$.$anonfun$toScaldiBindings$1(ScaldiBuilder.scala:190)
at scaldi.SimpleContainerInjector.preparedBindings$lzycompute(Module.scala:376)
at scaldi.SimpleContainerInjector.preparedBindings(Module.scala:376)
at scaldi.SimpleContainerInjector.init(Module.scala:392)
at scaldi.Initializeable.partialInit(Injector.scala:299)
at scaldi.Initializeable.partialInit$(Injector.scala:297)
at scaldi.SimpleContainerInjector.partialInit(Module.scala:375)
at scaldi.MutableInjectorAggregation.$anonfun$init$1(Injector.scala:219)
at scala.collection.immutable.List.flatMap(List.scala:335)
at scaldi.MutableInjectorAggregation.init(Injector.scala:218)
at scaldi.Initializeable.partialInit(Injector.scala:299)
at scaldi.Initializeable.partialInit$(Injector.scala:297)
at scaldi.MutableInjectorAggregation.partialInit(Injector.scala:177)
at scaldi.Initializeable.initNonLazy(Injector.scala:284)
at scaldi.Initializeable.initNonLazy$(Injector.scala:284)
at scaldi.MutableInjectorAggregation.initNonLazy(Injector.scala:177)
at scaldi.play.ScaldiBuilder$.createScaldiInjector(ScaldiBuilder.scala:151)
at scaldi.play.ScaldiBuilder.createInjector(ScaldiBuilder.scala:96)
at scaldi.play.ScaldiApplicationBuilder.realInjector(ScaldiApplicationBuilder.scala:72)
at scaldi.play.ScaldiApplicationBuilder.build(ScaldiApplicationBuilder.scala:80)
at muneris.console.ui.ApplicationLoader.load(ApplicationLoader.scala:35)
at play.core.server.DevServerStart$$anon$1.$anonfun$reload$3(DevServerStart.scala:174)
at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
at play.core.server.DevServerStart$$anon$1.reload(DevServerStart.scala:171)

This seems to happen when the Environment class gets loaded. Does anyone here have any idea of what it could be?

dingdong
  • 169
  • 10

1 Answers1

2

I had run into exactly the same problem and found out this was caused by upgrading scala version in build.sbt (scala v2.12.6). I downgraded scala to v2.12.4 and it worked fine.

golemiso
  • 36
  • 1
  • Interesting as play 2.12.5 broke macros which Scaldi relies on, but that was supposed to be fixed in play 2.12.6. I already submitted this as an issue for scaldi-play, but maybe the real problem lies in the Scala update. – dingdong May 12 '18 at 11:59
  • Just tried the downgrade to Scala 2.12.4. Works fine. Thanks. – dingdong May 12 '18 at 12:21