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> 排除间接依赖其他的包,以免后续出现包冲突或

其他异常问题。

相关推荐
xiaoqiMikko8 分钟前
Redis 实战(基础篇):把一个老 RedisUtil 搬到 Spring Boot 4,一路踩出来的坑(真机实测)
java·spring boot·redis
IT研究室1 小时前
最新计算机毕业设计选题推荐-基于spring boot的母婴全程服务管理系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
霸道流氓气质2 小时前
Redisson BloomFilter:分布式位图实现、误判率调优与缓存穿透三级防护的 Spring Boot 生产级实战
spring boot·分布式·缓存
凤山老林11 小时前
Spring Boot 启动冲刺:耗时剖析、懒加载策略与事件驱动初始化优化
spring boot·后端·python
Wx-bishekaifayuan19 小时前
springboot铜仁非遗之家76938-计算机课程设计、毕业设计
java·spring boot·后端·spring·django·课程设计·旅游
顽疲19 小时前
java vue springboot 养老系统源码详解:退住 care_out 审批结算与腾床事务实践
java·vue.js·spring boot·vue养老·springboot养老·java养老
苏渡苇21 小时前
Spring Insight:跨服务调用链路是怎么串起来的?
spring boot·后端·spring·系统监控·apm
白露与泡影1 天前
Spring Boot 实现验证码:Hutool-captcha、AJ-Captcha、EasyCaptcha 到底怎么选?
java·spring boot·后端