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

Micronaut配置Swagger UI后访问出现404错误求助

排查Micronaut Swagger UI 404错误的方案

我来帮你一步步排查这个Swagger UI访问404的问题,结合你提供的配置,我们从几个关键方向入手:

1. 先确认Swagger UI静态资源是否已生成

首先要排查核心问题:编译后有没有生成Swagger UI的静态文件。执行以下操作:

  • 运行 ./gradlew clean build 清理并重新构建项目
  • 打开项目的 build/classes/java/main/META-INF/swagger/views/ 目录,检查是否存在 swagger-ui 文件夹,且文件夹内有 index.html、swagger-ui-bundle.js 等静态资源

如果这个文件夹不存在,说明你的编译参数没有正确触发UI资源生成,或者依赖缺失。

2. 优化build.gradle的OpenAPI配置

你当前通过编译器参数配置UI开关,这种方式容易因为fork模式或参数传递问题失效。建议改用Micronaut Gradle插件的专属配置块,更直观且不易出错:

plugins {
    id("io.micronaut.application") version "你的Micronaut版本"
    id("io.micronaut.openapi") version "1.3.4"
}

micronaut {
    openapi {
        views {
            swaggerui {
                enabled = true
                theme = "flattop"
            }
            rapidoc {
                enabled = true
            }
        }
    }
}

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
    options.compilerArgs.add('-parameters')
    options.fork = true
}

这种配置方式会自动将UI生成参数传递给编译过程,避免手动设置JVM参数可能出现的问题。

3. 修正application.yaml的静态资源路由

你的静态资源配置可能存在路径匹配问题,尝试调整swagger-ui的路径配置(注意结尾的斜杠):

micronaut:
  server:
    port: 9090
    cors:
      enabled: true
    router:
      static-resources:
        swagger:
          paths: classpath:META-INF/swagger
          mapping: /swagger/**
        swagger-ui:
          paths: classpath:META-INF/swagger/views/swagger-ui/
          mapping: /swagger-ui/**
        rapidoc:
          paths: classpath:META-INF/swagger/views/rapidoc/
          mapping: /rapidoc/**

另外,如果你使用的是Micronaut 2.x+版本,其实可以省略这些静态资源配置——micronaut-openapi插件会自动注册这些路由,手动配置反而可能冲突。

4. 验证依赖兼容性

确保micronaut-openapi的版本和你的Micronaut核心版本兼容:

  • 你使用的是1.3.4版本的micronaut-openapi,对应的Micronaut核心版本应该是2.0.x到2.5.x之间
  • 检查build.gradle中是否正确引入了依赖:
implementation("io.micronaut.openapi:micronaut-openapi")
runtimeOnly("io.swagger.core.v3:swagger-ui") // 确保包含Swagger UI的运行时依赖

5. 测试访问的小技巧

如果配置都调整后还是404,尝试直接访问完整路径:http://localhost:9090/swagger-ui/index.html——有些情况下根路径的重定向需要额外配置,直接访问index.html可以绕过这个问题。

替代方案:使用OpenAPI Starter

如果手动配置总是出问题,可以直接引入Micronaut OpenAPI Starter,它会自动处理所有依赖、资源生成和路由配置:

implementation("io.micronaut.starter:micronaut-starter-openapi")

引入后只需要保留@OpenAPIDefinition注解,其他配置都可以简化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:07:44