JHipster升级至7.1.0网关抛出ClassNotFoundException异常
问题根因
你第一步的修复方向完全错了。JHipster 7.1.0的微服务网关默认走Spring WebMVC(Servlet)技术栈,不是WebFlux响应式栈。最初报ServerCodecConfigurer找不到,本质是升级过程中配置覆盖不全导致Spring MVC自带的编码配置类没被正常加载,和缺WebFlux依赖没有关系。
你把spring-boot-starter-web换成spring-boot-starter-webflux相当于直接把整个Web技术栈切到了响应式,而项目里自动生成的LocaleConfiguration是Servlet栈专属的,依赖org.springframework.web.servlet.LocaleResolver类,这个类在WebFlux包里根本不存在,自然会抛ClassNotFoundException: LocaleResolver。
修复步骤
- 先回退错误的依赖修改:如果用Maven就改
pom.xml,用Gradle就改build.gradle,把spring-boot-starter-webflux删掉,换回原生的spring-boot-starter-web,依赖配置和JHipster 7.1.0默认生成的网关保持一致。 - 清理编译缓存,避免旧的class文件干扰启动:
# Maven项目执行 mvn clean # Gradle项目执行 ./gradlew clean
- 检查启动类配置:找到项目入口类
OhEssentialsApp.java,确认两个点:- 类上的
@SpringBootApplication注解没有手动排除CodecsAutoConfiguration,这个自动配置类就是负责在Servlet栈下注册ServerCodecConfigurerBean的 - 启动类放在根包
oh.essentials下,所有业务类、配置类都在该包的子包路径下,保证Spring组件扫描范围能覆盖到所有配置
- 类上的
- 上述操作做完还是报错的话,直接强制重新生成项目文件,修复升级过程中遗漏的配置:
npx jhipster --with-entities --force
生成过程中网关类型保持默认的Servlet栈选项,不要选响应式网关,生成完成后重新启动即可。
注意事项
不要照着零散的回答随便改核心依赖:手动注册ServerCodecConfigurer Bean会引发循环依赖,随便切WebFlux栈会导致整套本地化、权限拦截、网关路由逻辑全部不兼容,JHipster生成的代码和所选技术栈是强绑定的,乱改依赖只会引出更多连锁报错。
内容的提问来源于stack exchange,提问作者cluis92
相关产品推荐
相关产品推荐

