Spring boot + dubbo 项目启动报错 ClassNotFoundException WebServerFactoryCustomizer

1 背景

代码和包依赖等信息没做任何修改,之前项目启动没问题的,有一天项目在测试环境突然启动报错

了,生产环境可以正常启动。报错信息如下所示。

java 复制代码
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.web.server.WebServerFactoryCustomizer
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

2 原因分析和问题解决

可能原因是该项目部署时加载到的间接依赖包有变化导致的。

通过对比测试环境和生产环境项目的安装包里面加载的依赖包,找到差异。如果测试环境多出了一

些包,则排除测试环境多余的包即可(依次排除多余的包,直到项目正常启动为止)。

具体步骤为:

(1)下载测试环境和生产环境的项目安装包(jar包等);

(2)直接解压安装包,对比 解压文件中"\BOOT-INF\lib" 里的依赖包的差异;

(3)在idea添加 "Maven Helper"插件,通过该插件快速找到测试环境多出的包所在的项目直接依

赖包位置,并在直接依赖包中排除此多出的包。

3 扩展

在项目中引入其他包时,尽量使用 <exclusions> 排除间接依赖其他的包,以免后续出现包冲突或

其他异常问题。

相关推荐
Code blocks2 小时前
关于“LoggerFactory is not a Logback LoggerContext but Logback is on ......“的解决方案
java·spring boot·后端
飞翔的佩奇2 小时前
基于SpringBoot+MyBatis+MySQL+VUE实现的经方药食两用服务平台管理系统(附源码+数据库+毕业论文+部署教程+配套软件)
数据库·vue.js·spring boot·mysql·毕业设计·mybatis·经方药食两用平台
纯洁的小魔鬼5 小时前
Springboot 配置 doris 连接
spring boot·doris·连接池
c_zyer5 小时前
Mermaid流程图可视化系统:基于Spring Boot与Node.js的三层架构实现
spring boot·node.js·流程图·mermaid
_码农121387 小时前
spring boot + mybatis + mysql 只有一个实体类的demo
spring boot·mysql·mybatis
c_zyer8 小时前
FreeSWITCH与Java交互实战:从EslEvent解析到Spring Boot生态整合的全指南
spring boot·netty·freeswitch·eslevent
郝学胜-神的一滴8 小时前
Spring Boot Actuator 保姆级教程
java·开发语言·spring boot·后端·程序人生
斜月9 小时前
Springboot 项目加解密的那些事儿
spring boot·后端
草莓爱芒果9 小时前
Spring Boot中使用Bouncy Castle实现SM2国密算法(与前端JS加密交互)
java·spring boot·算法
汤姆yu11 小时前
基于springboot的快递分拣管理系统
java·spring boot·后端