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

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

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

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

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

相关推荐
Jiude4 分钟前
AI 全栈时代的工程化护栏:Vben-Nest 让 Mock 契约落地成真实后端
前端·后端·nestjs
菜鸡儿齐15 分钟前
leetcode-最小栈
java·算法·leetcode
每天进步一点_JL22 分钟前
分布式系统中如何保证幂等,数据一致性 - 案例
后端
嘻哈baby29 分钟前
MySQL数据库cpu飙升到500%该如何处理?
后端
莫寒清41 分钟前
Spring MVC:@PathVariable 注解详解
java·spring·mvc
AKA__Zas44 分钟前
初识基本排序
java·数据结构·学习方法·排序
彡Summer丶1 小时前
后台管理系统实战
后端
Java编程爱好者1 小时前
字节Trae IDE全模式深度解析+Java后端实战技巧,架构师面试效率拉满
后端
Java水解1 小时前
你真的会打印日志吗?基于 Spring Boot 的全方位日志指南
spring boot·后端
Gogo11211 小时前
架构的宿命:深入对比 NestJS (Node.js) 与 Java 的垃圾回收机制
java·node.js