swagger-api/swagger-play

Provider io.swagger.scala.converter.SwaggerScalaModelConverter could not be instantiated at play.modules.swagger.SwaggerPluginImpl

santus20111 opened this issue · 1 comments

I am using play 2.6.10 and swagger-play 1.6.0
`play.api.UnexpectedException: Unexpected exception[CreationException: Unable to create injector, see the following errors:

  1. Error injecting constructor, java.util.ServiceConfigurationError: io.swagger.converter.ModelConverter: Provider io.swagger.scala.converter.SwaggerScalaModelConverter could not be instantiated
    at play.modules.swagger.SwaggerPluginImpl.(SwaggerPlugin.scala:35)
    while locating play.modules.swagger.SwaggerPluginImpl
    at play.modules.swagger.SwaggerModule.bindings(SwaggerModule.scala:11):
    Binding(interface play.modules.swagger.SwaggerPlugin to ConstructionTarget(class play.modules.swagger.SwaggerPluginImpl) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
    while locating play.modules.swagger.SwaggerPlugin

1 error]
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1.reload(DevServerStart.scala:186)
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1.get(DevServerStart.scala:124)
at play.core.server.AkkaHttpServer.play$core$server$AkkaHttpServer$$modelConversion(AkkaHttpServer.scala:183)
at play.core.server.AkkaHttpServer.play$core$server$AkkaHttpServer$$handleRequest(AkkaHttpServer.scala:189)
at play.core.server.AkkaHttpServer$$anonfun$5.apply(AkkaHttpServer.scala:106)
at play.core.server.AkkaHttpServer$$anonfun$5.apply(AkkaHttpServer.scala:106)
at akka.stream.impl.fusing.MapAsync$$anon$24.onPush(Ops.scala:1191)
at akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:512)
at akka.stream.impl.fusing.GraphInterpreter.processEvent(GraphInterpreter.scala:475)
at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:371)
Caused by: com.google.inject.CreationException: Unable to create injector, see the following errors:

  1. Error injecting constructor, java.util.ServiceConfigurationError: io.swagger.converter.ModelConverter: Provider io.swagger.scala.converter.SwaggerScalaModelConverter could not be instantiated
    at play.modules.swagger.SwaggerPluginImpl.(SwaggerPlugin.scala:35)
    while locating play.modules.swagger.SwaggerPluginImpl
    at play.modules.swagger.SwaggerModule.bindings(SwaggerModule.scala:11):
    Binding(interface play.modules.swagger.SwaggerPlugin to ConstructionTarget(class play.modules.swagger.SwaggerPluginImpl) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
    while locating play.modules.swagger.SwaggerPlugin

1 error
at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:470)
at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:184)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
at com.google.inject.Guice.createInjector(Guice.java:99)
at com.google.inject.Guice.createInjector(Guice.java:84)
at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:185)
at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:137)
at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$1.apply(DevServerStart.scala:174)
at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$1.apply(DevServerStart.scala:171)
Caused by: java.util.ServiceConfigurationError: io.swagger.converter.ModelConverter: Provider io.swagger.scala.converter.SwaggerScalaModelConverter could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:232)
at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
at java.util.ServiceLoader$LazyIterator.access$700(ServiceLoader.java:323)
at java.util.ServiceLoader$LazyIterator$2.run(ServiceLoader.java:407)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:409)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at io.swagger.converter.ModelConverters.(ModelConverters.java:114)
at play.modules.swagger.PlayReader.parseMethod(PlayReader.java:487)
Caused by: java.lang.ExceptionInInitializerError: null
at io.swagger.scala.converter.SwaggerScalaModelConverter.(SwaggerScalaModelConverter.scala:19)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
at java.util.ServiceLoader$LazyIterator.access$700(ServiceLoader.java:323)
at java.util.ServiceLoader$LazyIterator$2.run(ServiceLoader.java:407)
at java.security.AccessController.doPrivileged(Native Method)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.8.6 requires Jackson Databind version >= 2.8.0 and < 2.9.0
at com.fasterxml.jackson.module.scala.JacksonModule$class.setupModule(JacksonModule.scala:66)
at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:18)
at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:751)
at io.swagger.scala.converter.SwaggerScalaModelConverter$.(SwaggerScalaModelConverter.scala:15)
at io.swagger.scala.converter.SwaggerScalaModelConverter$.(SwaggerScalaModelConverter.scala)
at io.swagger.scala.converter.SwaggerScalaModelConverter.(SwaggerScalaModelConverter.scala:19)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
`

I have a similar problem, which may could have the same cause.
I am using play 2.6.11 and swagger-play 1.6.0
It looks like the newInstance method fails for the class SwaggerScalaModelConverter for some reason.
The problem occurs after adding the following dependency to my build.sbt file:
libraryDependencies += "com.auth0" % "java-jwt" % "3.3.0"
After removing the line, swagger-play works again. There have been no other changes to my codebase beside of this line.

java.util.ServiceConfigurationError: io.swagger.converter.ModelConverter: Provider io.swagger.scala.converter.SwaggerScalaModelConverter could not be instantiated java.util.ServiceLoader.fail(ServiceLoader.java:232) java.util.ServiceLoader.access$100(ServiceLoader.java:185) java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384) java.util.ServiceLoader$LazyIterator.access$700(ServiceLoader.java:323) java.util.ServiceLoader$LazyIterator$2.run(ServiceLoader.java:407) java.security.AccessController.doPrivileged(Native Method) java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:409) java.util.ServiceLoader$1.next(ServiceLoader.java:480) io.swagger.converter.ModelConverters.<clinit>(ModelConverters.java:114) play.modules.swagger.PlayReader.parseMethod(PlayReader.java:487) play.modules.swagger.PlayReader.read(PlayReader.java:139) play.modules.swagger.PlayReader.read(PlayReader.java:63) play.modules.swagger.PlayReader.read(PlayReader.java:57) play.modules.swagger.ApiListingCache$.$anonfun$listing$1(ApiListingCache.scala:17) scala.Option.orElse(Option.scala:289) play.modules.swagger.ApiListingCache$.listing(ApiListingCache.scala:11) play.modules.swagger.SwaggerPluginImpl.<init>(SwaggerPlugin.scala:164) SwaggerComponents.$init$(SwaggerComponents.scala:6) Launcher$$anon$1.<init>(Launcher.scala:6) Launcher.load(Launcher.scala:6) play.core.server.DevServerStart$$anon$1.$anonfun$reload$3(DevServerStart.scala:174) play.utils.Threads$.withContextClassLoader(Threads.scala:21) play.core.server.DevServerStart$$anon$1.reload(DevServerStart.scala:171) play.core.server.DevServerStart$$anon$1.get(DevServerStart.scala:124) play.core.server.AkkaHttpServer.modelConversion(AkkaHttpServer.scala:183) play.core.server.AkkaHttpServer.handleRequest(AkkaHttpServer.scala:189) play.core.server.AkkaHttpServer.$anonfun$createServerBinding$1(AkkaHttpServer.scala:106) akka.stream.impl.fusing.MapAsync$$anon$24.onPush(Ops.scala:1191) akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:512) akka.stream.impl.fusing.GraphInterpreter.processEvent(GraphInterpreter.scala:475) akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:371) akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:584) akka.stream.impl.fusing.GraphInterpreterShell$AsyncInput.execute(ActorGraphInterpreter.scala:468) akka.stream.impl.fusing.GraphInterpreterShell.processEvent(ActorGraphInterpreter.scala:559) akka.stream.impl.fusing.ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$processEvent(ActorGraphInterpreter.scala:741) akka.stream.impl.fusing.ActorGraphInterpreter$$anonfun$receive$1.applyOrElse(ActorGraphInterpreter.scala:756) akka.actor.Actor.aroundReceive(Actor.scala:517) akka.actor.Actor.aroundReceive$(Actor.scala:515) akka.stream.impl.fusing.ActorGraphInterpreter.aroundReceive(ActorGraphInterpreter.scala:666) akka.actor.ActorCell.receiveMessage(ActorCell.scala:527) akka.actor.ActorCell.invoke(ActorCell.scala:496) akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) akka.dispatch.Mailbox.run(Mailbox.scala:224) akka.dispatch.Mailbox.exec(Mailbox.scala:234) akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)