SpringBoot自定义类加载器,项目打包成jar包后,加载不到Class

项目涉及需要留接口给第三方进行功能扩展,第三方实现统一的扩展接口后将扩展代码上传到了数据库,再执行扩展方法的时候再将扩展类加载到jvm内存。因为是加载项目外的class类,所以通过实现自定义类加载器继承了ClassLoader通过defineClass方法去实现外部类的加载。但是在通过spring-boot-maven-plugin插件打包后jar包内目录结构变化,项目中存在的类(如项目中统一的扩展类接口,依赖类等)都无法通过自定义类加载器加载到。

通过spring-boot-maven-plugin插件打包后jar包内目录结构

通过maven-jar-plugin插件打包后jar包内目录结构

解决方法 :不改变打包方式,通过继承线程上下文类加载器的方式,可以解决该问题

相关推荐
上进小菜猪几秒前
基于 YOLOv8 的高压输电线路(绝缘子、电缆)故障自动识别 [目标检测完整源码]
后端
Knight_AL4 分钟前
设计模式之责任链模式:原理解析 + Java 示例
java·设计模式·责任链模式
1candobetter6 分钟前
JAVA后端开发——深入理解 Java Static
java·开发语言
一念一花一世界13 分钟前
PostIn项目实战 - 使用Mock数据尽早满足前后端接口开发需求
java·mock·postin·接口管理工具
白露与泡影15 分钟前
Spring事件机制完全指南:解耦利器与实战
java·后端·spring
DYS_房东的猫16 分钟前
《 C++ 零基础入门教程》第10章:C++20 核心特性 —— 编写更现代、更优雅的 C++
java·c++·c++20
好好沉淀17 分钟前
Spring AI Alibaba
java·人工智能·spring
陈随易26 分钟前
聊一聊2025年用AI的思考与总结
前端·后端·程序员
BD_Marathon29 分钟前
MyBatis各种查询功能
java·开发语言·mybatis
为爱停留34 分钟前
Spring Boot 应用配置参数化实践:通过 Docker Run 参数传递配置
spring boot·后端·docker