Playframework 2.0 播放框架招摇过市UI集成错误
我正在尝试为PlayFramework2.5.x提供的RESTAPI集成Swagger UI 我做了以下工作:Playframework 2.0 播放框架招摇过市UI集成错误,playframework-2.0,swagger,Playframework 2.0,Swagger,我正在尝试为PlayFramework2.5.x提供的RESTAPI集成Swagger UI 我做了以下工作: 在my build.sbt中包含以下依赖项 将以下内容添加到我的路线中: 然后我尝试访问swagger.json 以下是我得到的错误: [error] application - ! @77515gnlp - Internal server error, for (GET) [/swagger.json] -> play.api.http.HttpErrorHandlerEx
[error] application -
! @77515gnlp - Internal server error, for (GET) [/swagger.json] ->
play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[NullPointerException: null]]
at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:280)
at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:206)
at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100)
at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99)
at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:346)
at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:345)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36)
at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70)
at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:44)
at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:252)
Caused by: java.lang.NullPointerException: null
at play.modules.swagger.ApiListingCache$$anonfun$listing$1.apply(ApiListingCache.scala:15)
at play.modules.swagger.ApiListingCache$$anonfun$listing$1.apply(ApiListingCache.scala:11)
at scala.Option.orElse(Option.scala:289)
at play.modules.swagger.ApiListingCache$.listing(ApiListingCache.scala:11)
at controllers.SwaggerBaseApiController.getResourceListing(ApiHelpController.scala:128)
at controllers.ApiHelpController$$anonfun$getResources$1.apply(ApiHelpController.scala:74)
at controllers.ApiHelpController$$anonfun$getResources$1.apply(ApiHelpController.scala:71)
at play.api.mvc.ActionBuilder$$anonfun$apply$13.apply(Action.scala:371)
at play.api.mvc.ActionBuilder$$anonfun$apply$13.apply(Action.scala:370)
at play.api.mvc.Action$.invokeBlock(Action.scala:498)
还有什么我应该添加或查看的吗?您似乎没有在
应用程序中启用swagger模块。conf
:
play.modules.enabled += "play.modules.swagger.SwaggerModule"
我建议您参考这篇伟大的博客文章,了解与play框架的正确集成:
祝你好运:)看了你的项目一段时间后,我发现你面临的问题是什么。基本上,Play Swagger模块提供了一个Guice绑定来初始化自己,而您在库中似乎没有使用该绑定,因此该模块无法初始化自己,然后在运行时出现错误。我将向PlaySwigger报告这一问题(应该写在文档中) 具体情况是:
SwaggerPlugin
(播放Swagger)http://localhost:9000/swagger.json
GET请求已处理null
静态变量路由
文件上使用yml注释,而不是注释,这可以防止整个应用程序出现编译和运行时错误,但这会使调试更加困难,因为它无法无声地生成swagger.json
文件。我建议您尝试使用替代安装在运行时生成swagger.json
。链接:
祝你好运,希望这会有所帮助。我尝试重新创建一个项目,只是添加了端点和依赖项。我注意到你同样的错误,但是在添加配置之后,它被它修复了。您可以添加更多信息或项目示例吗?引用的链接是固定链接@slashdottir如链接中所述,此参考现在可能已过时。我仍然希望这个答案可能会有所帮助。但另一方面,这实际上意味着插件没有初始化,而另一个答案对其他有问题的人也是有效的。
[error] application -
! @77515gnlp - Internal server error, for (GET) [/swagger.json] ->
play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[NullPointerException: null]]
at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:280)
at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:206)
at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100)
at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99)
at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:346)
at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:345)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36)
at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70)
at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:44)
at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:252)
Caused by: java.lang.NullPointerException: null
at play.modules.swagger.ApiListingCache$$anonfun$listing$1.apply(ApiListingCache.scala:15)
at play.modules.swagger.ApiListingCache$$anonfun$listing$1.apply(ApiListingCache.scala:11)
at scala.Option.orElse(Option.scala:289)
at play.modules.swagger.ApiListingCache$.listing(ApiListingCache.scala:11)
at controllers.SwaggerBaseApiController.getResourceListing(ApiHelpController.scala:128)
at controllers.ApiHelpController$$anonfun$getResources$1.apply(ApiHelpController.scala:74)
at controllers.ApiHelpController$$anonfun$getResources$1.apply(ApiHelpController.scala:71)
at play.api.mvc.ActionBuilder$$anonfun$apply$13.apply(Action.scala:371)
at play.api.mvc.ActionBuilder$$anonfun$apply$13.apply(Action.scala:370)
at play.api.mvc.Action$.invokeBlock(Action.scala:498)
play.modules.enabled += "play.modules.swagger.SwaggerModule"