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

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

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

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

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

相关推荐
玛卡巴卡ldf5 分钟前
【Springboot5】审批流工作流引擎(业务、审批分离)排除if else
java·springboot
真心喜欢你吖5 分钟前
OpenClaw安装部署Mac操作系统版 - 打造你的专属AI助理
java·人工智能·macos·ai·语言模型·智能体·openclaw
LSL666_10 分钟前
JVM面试题——垃圾收集器
java·jvm·面试·垃圾收集器
Via_Neo18 分钟前
今天是周六,两天后是周几?
java·数据结构·算法
星晨雪海18 分钟前
Redis-逻辑查询详情讲解
java·开发语言
chools21 分钟前
Java后端拥抱AI开发之个人学习路线 - - Spring AI【第二期】
java·人工智能·学习·spring·ai
uNke DEPH24 分钟前
MySQL中常见函数
java
大鹏说大话26 分钟前
Java线程池调优实战:从核心参数到避坑指南
java·开发语言
※DX3906※28 分钟前
SpringBoot之旅5| 快速上手SpringAOP、深入刨析动态/静态两种代理模式
java·数据库·spring boot·后端·spring·java-ee·代理模式
lolo大魔王33 分钟前
Go语言的基础语法
开发语言·后端·golang