You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot3+Java19 Maven项目集成Swagger-UI报错求助

问题解决方案

1. 移除错误注解

Spring Boot 3.x 集成Swagger-UI用的是springdoc-openapi,不需要@EnableSwagger2——这个注解是旧版Springfox框架的,和springdoc完全不兼容,直接删掉代码里的这个注解。

2. 修复Repository方法的参数注解

控制台的NullPointerException核心原因是:Spring Data Repository的某个方法参数没有标注@Param注解,导致springdoc解析时无法获取注解实例而抛出空指针。

检查所有自定义的Repository接口,确保:

  • 自定义@Query查询的方法,参数必须用@org.springframework.data.repository.query.Param绑定占位符
  • 哪怕是派生查询方法,也建议加上@Param注解,避免反射解析参数名失败

示例:
错误写法:

@Query("SELECT u FROM User u WHERE u.username = :username")
User findByUsername(String username);

正确写法:

@Query("SELECT u FROM User u WHERE u.username = :username")
User findByUsername(@Param("username") String username);

3. 配置Maven编译参数(Java 19必填)

Java 19默认编译时不会保留方法参数名,导致反射无法获取参数名,即使没写@Param也会触发解析错误。在pom.xml的build/plugins中添加编译插件配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
        <source>19</source>
        <target>19</target>
        <!-- 保留参数名,支持反射获取 -->
        <parameters>true</parameters>
    </configuration>
</plugin>

4. 确认springdoc依赖版本

确保springdoc-openapi-starter-webmvc-ui的版本适配Spring Boot 3.0.3,推荐使用2.0.x稳定版,pom.xml依赖配置:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.0.2</version>
</dependency>

5. 排除冲突依赖

如果项目中之前引入过Springfox(swagger2/swagger-ui)相关依赖,需要全部移除,避免和springdoc产生依赖冲突。

完成以上步骤后,重新打包启动项目,访问http://localhost:8080/swagger-ui/index.html即可正常使用Swagger-UI。

内容的提问来源于stack exchange,提问作者Krzysztof Chwedziak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:37:28