Spring Boot项目引入knife4j提示doc.html不存在

本文介绍如何正确配置Spring Boot项目中的Swagger文档访问路径,并解决因不当配置导致的doc.html页面无法打开的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官网推荐办法:

@SpringBootApplication
public class SwaggerBootstrapUiDemoApplication  implements WebMvcConfigurer{

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
	}
}

或者

@SpringBootApplication
public class SwaggerBootstrapUiDemoApplication  implements WebMvcConfigurer{

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("doc.html").addResourceLocations("classpath*:/META-INF/resources/");
		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath*:/META-INF/resources/webjars/");
	}
}

如果还没有用,看看你是不是有这个配置

@Configuration
@EnableWebMvc
public class CoreConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry
                .addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }
    }

在有权限引入的情况下,上面配置时正常的。如果你的系统没有权限,很难过的就是,这个配置会导致你的doc.html页面打不开
具体什么原因,我也不知道,知道的小伙伴评论区里面见

### 解决 Knife4j OpenAPI3 Jakarta Spring Boot Starter 无法访问 `doc.html` 的问题 当集成 `knife4j-openapi3-jakarta-spring-boot-starter` 并尝试访问 `doc.html` 页面遇到问题时,通常涉及以下几个方面: #### 1. 正确引入依赖 确保项目的 Maven 或 Gradle 文件中已正确添加所需依赖项。对于 Maven 用户来说,应该有如下配置[^1]: ```xml <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.5.0</version> </dependency> ``` #### 2. 资源路径配置 如果Spring Boot应用未能自动识别到静态资源,则需显式指定其位置。可以在application.yml或properties文件里加入以下设置来帮助框架找到必要的前端文件[^2]: ```yaml spring: mvc: static-path-pattern: /static/** server: servlet: context-path: / ``` #### 3. 处理 StackOverflowError 异常 针对某些情况下可能出现的栈溢出错误(StackOverflowError),这可能是由于OpenAPI文档解析过程中存在循环引用或其他复杂结构引起的。可以通过调整JVM参数增加堆大小或者优化代码逻辑减少递归深度等方式缓解此现象[^3]: - 增加 JVM 启动参数 `-Xss512k`, 提高线程栈空间; - 审查实体类定义,避免必要的双向关联。 #### 4. 检查 API 文档扫描范围 确认应用程序上下文中确实包含了待暴露给Swagger UI展示的服务接口,并通过适当的方式开启API文档自动生成功能。一般而言,在主程序入口处加上@EnableKnife4j注解即可实现这一点: ```java @SpringBootApplication @EnableKnife4j public class Application { } ``` 以上措施有助于解决大多数场景下因缺少必要配置而导致的`doc.html`页面加载失败的情况。当然,具体原因还需结合实际开发环境进一步排查分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值