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

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

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

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

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

相关推荐
咕白m6256 分钟前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python
云技纵横25 分钟前
@Transactional 里套 REQUIRES_NEW,为什么会把连接池耗尽?
后端·面试
tcdos31 分钟前
不止扫码 — 微信生态深度融合(登录 + 支付 + 消息)
后端·微信小程序
程序员cxuan34 分钟前
Anthropic 大面积封号,连大 V 都忍不了开喷了。
人工智能·后端·程序员
MacroZheng1 小时前
短短几天,暴涨2.8万Star!又一款编程神器开源!
java·人工智能·后端
PinkSun1 小时前
平台线程池用了3年很顺手,换成虚拟线程后我后悔了
后端
达达尼昂1 小时前
Claude : 如何设计可控的agent-loops
前端·人工智能·后端
lambdax1 小时前
Celery 心跳任务内存膨胀排查与修复全记录
后端
SamDeepThinking1 小时前
函数式编程:用BiFunction消除多类型分支的代码重复
java·后端·面试
IT_陈寒1 小时前
Redis持久化丢失数据的坑,这次终于被我填平了
前端·人工智能·后端