zl程序教程

您现在的位置是:首页 >  后端

当前栏目

访问swagger文档报错Illegal DefaultValue 1024 for parameter type integer,java.lang.NumberFormatException

JAVA文档 报错 for 访问 type Parameter lang
2023-06-13 09:13:24 时间

后台报错问题日志

2021-12-30 15:41:24.675  WARN [nio-9008-exec-1] [] i.s.m.p.AbstractSerializableParameter    [421] : Illegal DefaultValue 1024 for parameter type integer

java.lang.NumberFormatException: For input string: ""
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Long.parseLong(Long.java:601)
	at java.lang.Long.valueOf(Long.java:803)
	at io.swagger.models.parameters.AbstractSerializableParameter.getExample(AbstractSerializableParameter.java:412)
	at sun.reflect.GeneratedMethodAccessor149.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:689)
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755)

问题排查

在AbstractSerializableParameter.getExample(AbstractSerializableParameter.java:412)打断点调试,可以发现代码执行到此处example的值为空字符串,执行Long.valueOf(this.example)会抛出’java.lang.NumberFormatException’ 异常。

解决办法

  1. 修改源码
  • 下载源码下来把if (this.example == null) 判定改成 if (this.example == null || example.isEmpty())
  1. 调整依赖(推荐)
  • 把swagger2的swagger-models排除,添加版本为1.5.21的swagger-models
<!--  解决 Illegal DefaultValue null for parameter type integer    异常  -->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <version>1.5.21</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.10.5</version>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-models</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

调整后可以看到新的版本修改了这个判定逻辑。

上述一波操作后,访问swagger文档地址不再报错。

呜啦啦啦啦 看官喜欢的话点赞收藏或者关注一下吧