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

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

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

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

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

相关推荐
用户8307196840826 分钟前
Spring Boot 集成 RabbitMQ :8 个最佳实践,杜绝消息丢失与队列阻塞
spring boot·后端·rabbitmq
小兔崽子去哪了17 分钟前
Java 自动化部署
java·后端
Selicens18 分钟前
git批量删除本地多余分支
前端·git·后端
哈密瓜的眉毛美22 分钟前
Java 基础补充:零基础学Java | Scanner 类详解
后端
ma_king23 分钟前
入门 java 和 数据库
java·数据库·后端
平平无奇的开发仔27 分钟前
Mybaitis 项目多模块多依赖xml加载classpath:和classpath*:的区别
后端
后端AI实验室30 分钟前
我用Cursor开发了3个月,整理出这套提效4倍的工作流
java·ai
神奇小汤圆42 分钟前
MySQL的10种高级SQL,性能飞升
后端
AI探索者44 分钟前
LangGraph 人工干预:Human-in-the-loop 机制详解
后端
神奇小汤圆1 小时前
Java并发核心:你以为AQS很复杂?无非是"两个队列"和"一个状态"
后端