JHipster 7.1.0版本swaggerUI访问返回404问题咨询
问题成因
- JHipster 7.1.0 版本默认将 Swagger UI 对应的静态页面资源的拷贝打包逻辑,绑定到了
dev环境专属的构建流程中。直接通过 IntelliJ 默认启动配置、或不加参数执行mvnw命令启动项目时,不会触发该资源拷贝逻辑,classpath 下缺失 Swagger UI 相关的静态文件,因此访问swagger-ui.html返回404。 - Springdoc / Springfox 生成的 v2、v3 版本 API Docs 是后端接口直接返回的 JSON 数据,不依赖前端静态资源,因此不受上述配置影响,可以正常访问。
- 执行
mvn clean spring-boot:run命令时可以正常访问,是因为 JHipster 为spring-boot:run插件默认配置了自动激活devprofile 的规则,启动时会自动执行 Swagger UI 静态资源的拷贝逻辑,资源存在因此页面可以正常加载。
解决方法
方案1:启动时主动激活 dev profile(推荐,符合JHipster默认设计)
- IntelliJ 启动配置中,找到「Active Profiles」输入项,填写
dev后保存配置,重启项目即可正常访问 Swagger UI。 - 使用
mvnw命令启动时,添加 profile 激活参数即可:# Linux/Mac ./mvnw spring-boot:run -Dspring.profiles.active=dev # Windows mvnw.cmd spring-boot:run -Dspring.profiles.active=dev
方案2:调整Maven配置,放开Swagger UI资源的profile限制
如果需要在非dev环境也能访问Swagger UI,修改pom.xml配置:
找到绑定了dev profile的Swagger UI资源拷贝执行任务,移除其profile关联,或添加你需要的生效profile,配置生效后重新启动项目即可。
方案3:手动添加静态资源映射
如果上述方案未生效,可在Spring Boot Web配置类中添加静态资源映射规则:
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } }
内容的提问来源于stack exchange,提问作者Julija Damjanovic
相关产品推荐
相关产品推荐

