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

其他异常问题。

相关推荐
Java水解28 分钟前
线程池详解:在SpringBoot中的最佳实践
spring boot·后端
阿里小阿希1 小时前
解决 Spring Boot + MyBatis 项目迁移到 PostgreSQL 后的数据类型不匹配问题
spring boot·postgresql·mybatis
码起来呗1 小时前
基于SpringBoot的高校学习讲座预约系统-项目分享
spring boot·后端·学习
广西千灵通网络科技有限公司2 小时前
基于 springboot+vue+elementui 的办公自动化系统设计(
vue.js·spring boot·elementui
bing_1582 小时前
在 Spring Boot 项目中如何使用索引来优化 SQL 查询?
spring boot·sql·索引优化
給妳一生緈諨2 小时前
11.AOP开发
java·spring boot·spring·springboot3
CopyLower4 小时前
在 Spring Boot 中实现 WebSockets
spring boot·后端·iphone
.生产的驴4 小时前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
晨集5 小时前
Uni-App 多端电子合同开源项目介绍
java·spring boot·uni-app·电子合同
时间之城5 小时前
笔记:记一次使用EasyExcel重写convertToExcelData方法无法读取@ExcelDictFormat注解的问题(已解决)
java·spring boot·笔记·spring·excel