## Pom引入 SpringBooot3.4的版本

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.5.0</version>
        </dependency>

  

## 通常来说Knife4j文档请求异常是没有放通权限和资源导向,通过网上说的加了注册器放通

/**
 * @author f2bpm@f2bpm.com
 * @version 创建时间:2019年8月23日 下午6:14:59 可以扩展SpringMVC的功能
 */
@Configuration
// public class WebConfig extends WebMvcConfigurationSupport
public class WebConfig implements WebMvcConfigurer {
 
	@Bean
	public AuthenticationInterceptor authenticationInterceptor() {
		return new AuthenticationInterceptor();
	}
	/**
	 * 拦截器验证登录身份
	 *
	 * @param registry
	 */
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		// 拦截所有请求,但排除这些:excludePathPatterns
		registry.addInterceptor(authenticationInterceptor()).addPathPatterns("/**").excludePathPatterns("/resources/**").excludePathPatterns("/static/**")
				.excludePathPatterns("/api/cloud/upload")
				.excludePathPatterns("/v2/**").excludePathPatterns("/swagger-ui/**").excludePathPatterns("/swagger*/**").excludePathPatterns("/doc.html").excludePathPatterns("*.html").excludePathPatterns("*.js").excludePathPatterns("*.css").excludePathPatterns("/webjars/**")
				.excludePathPatterns("/favicon.ico").excludePathPatterns("/ureport/**")
				.excludePathPatterns("/resources/**").excludePathPatterns("/error/**").excludePathPatterns("/workflow/public/**").excludePathPatterns("/error").excludePathPatterns("/login/**");
	}


	/**
	 * 添加特殊的访问路由映射资源到webjars
	 */
	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/resources/**").addResourceLocations("classpath:/resources/");
		registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
		registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
	}
} 

F12依然报错如下图:

 ## 报http://127.0.0.1:18090/v3/api-docs/swagger-config 500错误

 ## 后端报错:Knife4j SpringBooot3.4 No converter for [class java.util.LinkedHashMap] with preset Content-Type 'text/html;charset=UTF-8'

 找遍全网,没能解决,好吧,只能尝试从了的源代码调试了。

通过跟踪报错的代码位置:

 最后下载官网的示例代码跟踪发现:

 官网:https://doc.xiaominfo.com/docs/quick-start 代码:knife4j-spring-boot3-demo

在同一位置对比排查,官网的的执行是正常的。

 检查各种配置都没有问题。

官网的代码输入这个的是,显然它是一个Html内容的输出。

通过自己的代码工程和官方的代码工程Debug到org.springframework:Spring-webmvc这个AsyncTaskMethodReturnValueHandler.class

 发现问题所在了:在EncodingFilter过滤器filter中response的contenttype是

"text/html;charset=UTF-8"

 

把这行删除或修改为"application/json;charset=UTF-8"即可。

 然后问题解决,如下图:

 

posted on 2025-07-02 14:20  F2BPM工作流  阅读(79)  评论(0)    收藏  举报