异常信息

异常关键字 空指针 NullPointerException swagger

java.lang.NullPointerException: nullat springfox.documentation.swagger2.mappers.RequestParameterMapper.bodyParameter(RequestParameterMapper.java:264)at springfox.documentation.swagger2.mappers.RequestParameterMapper.mapParameter(RequestParameterMapper.java:149)at springfox.documentation.swagger2.mappers.ServiceModelToSwagger2Mapper.beforeMappingOperations(ServiceModelToSwagger2Mapper.java:125)at springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl.mapOperation(ServiceModelToSwagger2MapperImpl.java:109)at springfox.documentation.swagger2.mappers.ServiceModelToSwagger2Mapper.mapOperations(ServiceModelToSwagger2Mapper.java:270)at springfox.documentation.swagger2.mappers.ServiceModelToSwagger2Mapper.lambda$mapApiListings$2(ServiceModelToSwagger2Mapper.java:258)at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:270)at java.util.TreeMap$ValueSpliterator.forEachRemaining(TreeMap.java:2897)at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)at java.util.stream.ReferencePipeline.forEachOrdered(ReferencePipeline.java:423)at springfox.documentation.swagger2.mappers.ServiceModelToSwagger2Mapper.mapApiListings(ServiceModelToSwagger2Mapper.java:253)at springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl.mapDocumentation(ServiceModelToSwagger2MapperImpl.java:48)at springfox.documentation.swagger2.web.Swagger2ControllerWebMvc.getDocumentation(Swagger2ControllerWebMvc.java:99)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)at org.springframework.cloud.sleuth.instrument.web.servlet.TracingFilter.doFilter(TracingFilter.java:89)at org.springframework.cloud.sleuth.autoconfig.instrument.web.LazyTracingFilter.doFilter(TraceWebServletConfiguration.java:114)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)at com.payment.common.filter.RequestInputStreamCacheFilter.doFilterInternal(RequestInputStreamCacheFilter.java:29)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)

开始分析

抛出空指针的地方是 一个 RequestParameterMapper 请求参数的映射的类;

抛出异常基本上就是我们的方法注解定义错了;要做的就是检查注解,但是对于有很多方法的一个一个检查太麻烦了;
所以需要能定位到时那个方法的注解出现了问题;

跟着异常信息向上找

有个类是 ServiceModelToSwagger2Mapper 里面的一个方法 beforeMappingOperations 在映射操作之前

可以看到里面有个循环;这个循环应该是遍历了一个一个方法获取信息之后生成文档;

现在要做的就是把断点打到循环里。

@BeforeMapping@SuppressWarnings("deprecation")void beforeMappingOperations(@MappingTarget Operation target,springfox.documentation.service.Operation source,@Context ModelNamesRegistry modelNamesRegistry) {List<io.swagger.models.parameters.Parameter> parameters = new ArrayList<>();if (useModelV3) {for (RequestParameter each : source.getRequestParameters()) {//添加断点=== 查看each 信息后 放行parameters.addAll(Mappers.getMapper(RequestParameterMapper.class).mapParameter(each, modelNamesRegistry));}target.setResponses(mapResponses(source.getResponses(), modelNamesRegistry));} else {for (springfox.documentation.service.Parameter each : source.getParameters()) {parameters.add(Mappers.getMapper(ParameterMapper.class).mapParameter(each));}target.setResponses(mapResponseMessages(source.getResponseMessages()));}target.setParameters(parameters);}

重复执行 通过断点快速看到 each 的信息并记住,之后放行.直到抛出异常,然后可以根据记得注解的参数信息全局搜索;
可大致定位到时那个方法的问题;

比如问题:

使用@ApiImplicitParams 标注参数,却用 @RequestBody 接收会报错;

@ApiImplicitParams(
value = {
@ApiImplicitParam(name = “x”, value = “b”, required = true,example = “x”),
@ApiImplicitParam(name = “x”, value = “b”, required = true,example = “x”)
}
)
method(@RequestBody XX xx);

NullPointerException swagger相关推荐

  1. Swagger报错,Unable to scan document context default java.lang.NullPointerException: null

    最近改完代码之后,启动项目,发现有以下error报错: Unable to scan document context default java.lang.NullPointerException: ...

  2. 解决高版本SpringBoot整合swagger时启动报错:Failed to start bean ‘documentationPluginsBootstrapper‘ 问题

    一.控制台的报错信息 2021-12-29 15:15:04 [main] ERROR org.springframework.boot.SpringApplication - Application ...

  3. 使用swagger报错:Exception encountered during context initialization - cancelling refresh attempt解决方法

    今天在使用swagger时遇到了如下报错: WARN 19704 --- [ main] ConfigServletWebServerApplicationContext :Exception enc ...

  4. Swagger 弹窗问题

    Swagger 弹窗问题 springboot整合swagger后,出现一直弹窗问题,如图 经过查询资料找到可能是如下几个原因 1.在启动的时候没有扫描到Swagger工具类 解决办法:在启动类上添加 ...

  5. SpringBoot集成knife4j实现Swagger接口文档

    前言:如果你是后台开发,提供restful接口给前端,建议你使用Swagger3提供restful的接口文档自动生成和在线接口调试.knife4j是对Swagger进一步封装,其优化了API文档的UI ...

  6. 解决报错 ,启动类启动不起来,关于swagger

    Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerEx ...

  7. swagger主页访问报错500

    背景: 有一天前端给我要接口文档,我给发了个接口文档路径,结果直接报错500,截图如下: 原因分析: 500报错,看后台日志 java.lang.NullPointerException: nulla ...

  8. java.lang.NullPointerException异常原因及解决

    java.lang.NullPointerException异常原因是因为创建了一个引用类型的变量却没有指向任何对象而又去通过这个引用类型变量加点的形式去访问非静态的方法及属性. 给出三种情况, 第一 ...

  9. 前后端分离必备工具:Swagger快速搞定(整合SpringBoot详细教程)

    本文根据狂神教学视屏同步所做笔记 目录 一.Swagger简介 1. 前后端分离 2. Swagger引入 二.SpringBoot集成Swagger 1. 新建springboot项目 2. 导入S ...

最新文章

  1. mysql建表影响效率_MySQL建表查询优化技巧
  2. postman怎么导出测试用例_postman---postman文件夹介绍以及批量执行用例
  3. 力扣高频算法php_互联网公司最常见的面试算法题有哪些?
  4. [ZZ]如何在Web页面上直接打开、编辑、创建Office文档
  5. Spring Security Oauth2 (五) 密码码模式 整合jwt
  6. 智慧养殖系统方案云平台功能
  7. 【WinHex篇】WinHex跳过坏扇区制作磁盘镜像
  8. 查看XBox360的系统版本信息
  9. three.js 实现露珠滴落动画
  10. Windows锁机病毒
  11. Hyperledger Fabric基础介绍
  12. linux下挂载硬盘!
  13. 2019 网易校园招聘---[小易的字典]
  14. 移动应用界面设计的尺寸规范
  15. 拓嘉辰丰电商:拼多多一件代发三大优势有哪些
  16. 参加南京俱乐部程序员聚会有感
  17. iOS开发——App集成短信验证码
  18. AirBulb:会唱歌的灯泡
  19. 我的世界神秘时代安卓java版_我的世界神秘时代MOD
  20. 基于PostGIS叠加分析优化--气象预警分析案例实践

热门文章

  1. 算法笔记 (四)算法的逻辑结构和物理结构
  2. 五种方式获取一个文件的扩展名
  3. 分享下个人一直以来整理维护的C++/Qt开发用到的控件库
  4. Java数据结构与算法入门
  5. 使用Java进行简单的DDos攻击(手动滑稽!!)
  6. Android Studio TCP客户端实现
  7. 【CSS】定位--静态定位-相对定位-绝对定位-子绝父相-固定定位-粘性定位
  8. web前端:文本、字体、图像、列表 全【含精灵图,box-sizing,字符间距,首行缩进,垂直对齐】
  9. php命令执行后门,phpstudy后门利用方法及getshell
  10. Java黑皮书课后题第4章:*4.24(对三个城市排序)编写一个程序,提示用户输入三个城市名称,然后以升序进行显示