tapir
tapir copied to clipboard
[BUG] Error when accessing swagger UI
Tapir version: *** 1.0.0 Scala version: *** 2.13.8
Describe the bug
My code:
import sttp.tapir.swagger.bundle.SwaggerInterpreter
private lazy val endpoints = List(
AuthEndpoint.checkTable,
AuthEndpoint.checkPermission,
TestEndpoint.helloWorld
)
private lazy val swaggerEndpoints = SwaggerInterpreter().fromEndpoints[Future](endpoints, "xxxx", "xxxx")
lazy val route: Route =
serverInterpreter.toRoute(swaggerEndpoints)
The following error occurs when accessing the url: 0.0.0.0:8080/docs
Uncaught error from thread [guard-akka-http-server-akka.actor.default-dispatcher-5]: 'java.lang.Object sttp.monad.MonadError.blocking(scala.Function0)', shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[guard-akka-http-server]
java.lang.NoSuchMethodError: 'java.lang.Object sttp.monad.MonadError.blocking(scala.Function0)'
at sttp.tapir.static.Resources$.$anonfun$resources$2(Resources.scala:36)
at scala.util.Try$.apply(Try.scala:210)
at sttp.monad.MonadError.handleError(MonadError.scala:26)
at sttp.monad.MonadError.handleError$(MonadError.scala:25)
at sttp.monad.FutureMonad.handleError(MonadError.scala:128)
at sttp.monad.syntax$MonadErrorOps.handleError(MonadError.scala:58)
at sttp.tapir.static.Resources$.resources(Resources.scala:37)
at sttp.tapir.static.Resources$.$anonfun$apply$1(Resources.scala:17)
at sttp.tapir.server.interpreter.ServerInterpreter$$anon$2.$anonfun$onDecodeSuccess$1(ServerInterpreter.scala:197)
at sttp.monad.syntax$MonadErrorOps.flatMap(MonadError.scala:57)
at sttp.tapir.server.interpreter.ServerInterpreter$$anon$2.onDecodeSuccess(ServerInterpreter.scala:198)
at sttp.tapir.server.interceptor.decodefailure.DecodeFailureInterceptor$$anon$1.onDecodeSuccess(DecodeFailureInterceptor.scala:15)
at sttp.tapir.server.interceptor.content.UnsupportedMediaTypeInterceptor$$anon$1.onDecodeSuccess(UnsupportedMediaTypeInterceptor.scala:28)
at sttp.tapir.server.interceptor.log.ServerLogEndpointInterceptor$$anon$2.$anonfun$onDecodeSuccess$2(ServerLogInterceptor.scala:36)
at sttp.monad.syntax$MonadErrorOps.flatMap(MonadError.scala:57)
at sttp.tapir.server.interceptor.log.ServerLogEndpointInterceptor$$anon$2.$anonfun$onDecodeSuccess$1(ServerLogInterceptor.scala:37)
at scala.util.Try$.apply(Try.scala:210)
at sttp.monad.MonadError.handleError(MonadError.scala:26)
at sttp.monad.MonadError.handleError$(MonadError.scala:25)
at sttp.monad.FutureMonad.handleError(MonadError.scala:128)
at sttp.monad.syntax$MonadErrorOps.handleError(MonadError.scala:58)
at sttp.tapir.server.interceptor.log.ServerLogEndpointInterceptor$$anon$2.onDecodeSuccess(ServerLogInterceptor.scala:40)
at sttp.tapir.server.interceptor.exception.ExceptionInterceptor$$anon$1.$anonfun$onDecodeSuccess$1(ExceptionInterceptor.scala:19)
at scala.util.Try$.apply(Try.scala:210)
at sttp.monad.MonadError.handleError(MonadError.scala:26)
at sttp.monad.MonadError.handleError$(MonadError.scala:25)
at sttp.monad.FutureMonad.handleError(MonadError.scala:128)
at sttp.tapir.server.interceptor.exception.ExceptionInterceptor$$anon$1.onDecodeSuccess(ExceptionInterceptor.scala:19)
at sttp.tapir.server.interpreter.ServerInterpreter.$anonfun$tryServerEndpoint$16(ServerInterpreter.scala:128)
at sttp.monad.syntax$MonadErrorOps.map(MonadError.scala:56)
at sttp.tapir.server.interpreter.ServerInterpreter.$anonfun$tryServerEndpoint$15(ServerInterpreter.scala:129)
at sttp.tapir.server.interpreter.ServerInterpreter$ResultOrValue.$anonfun$flatMap$2(ServerInterpreter.scala:237)
at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:470)
at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:63)
at akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:100)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:94)
at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:100)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:49)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:48)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
What is the problem?
How to reproduce?
Maybe you can provide code to reproduce the problem?
Additional information
Do you have any other dependencies in your project? Any non-standard classloader / classpath setup?
I could not reproduce this with Tapir 1.3.0. Feel free to reopen if you're still having such issues with Swagger endpoints.