说明
项目启动正常,打开Swagger页面报错。
Swagger能够正常使用,接口也能够正常访问,就只是Swagger启动的时候,报出一个错误。
报错信息
AbstractSerializableParameter:Illegal DefaultValue null for parameter type integer
java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) ~[na:na]
at java.base/java.lang.Long.parseLong(Long.java:721) ~[na:na]
at java.base/java.lang.Long.valueOf(Long.java:1163) ~[na:na]
at io.swagger.models.parameters.AbstractSerializableParameter.getExample(AbstractSerializableParameter.java:412) ~[swagger-models-1.5.20.jar:1.5.20]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
原因
Swagger自己的Bug,Swagger高版本已经修复。
不升级Swagger版本的情况下,可以引入高版本的 annotations 和 models,替换基础包中对应的包。注意,高版本的包,必须放在基础包的前面,才会优先生效。
依赖代码
<!-- 为解决Swagger启动报错,引入高版本 annotations 和 models ;必须放在 swagger2 和 swagger-ui 前,才能优先生效-->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.21</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.21</version>
</dependency>
<!-- Swagger 基础包 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
参考
【Swagger异常】AbstractSerializableParameter:Illegal DefaultValue null for parameter type integer解决方案