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

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

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

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

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

相关推荐
_MyFavorite_几秒前
JAVA重点基础、进阶知识及易错点总结(17)线程安全 & synchronized 同步锁
java·开发语言·安全
_MyFavorite_1 分钟前
JAVA重点基础、进阶知识及易错点总结(13)File 类 + 路径操作
java·开发语言
Lyyaoo.2 分钟前
Spring Boot自动配置
java·spring boot·后端
呆毛cyan2 分钟前
K8s与CICD 部署 - 3. Harbor
后端
呆毛cyan2 分钟前
K8s与CICD 部署 - 3. Jenkins - 1.k8s安装jenkins
后端
后端不背锅7 分钟前
设计模式在业务开发中的实战指南
后端
禾小西14 分钟前
深入理解 Java String:从底层原理到高性能优化实战
java·开发语言·性能优化
渔民小镇18 分钟前
不用前端也能测试 —— 模拟客户端请求模块详解
java·服务器·前端·分布式·游戏
神奇小汤圆23 分钟前
进程 vs 线程:从原理到区别,一次讲清楚
后端