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

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

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

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

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

相关推荐
李少兄1 分钟前
从一篇IDEA笔记开始,我走出了自己的技术创作路
java·笔记·intellij-idea
Java水解4 分钟前
springboot: Spring Boot 启动流程详解
spring boot·后端
马卡巴卡11 分钟前
为什么Spring不建议使用@Autowired?@Resource才是王道
后端
martin101712 分钟前
Oracle 11g 数据库卡顿排查与实战优化:一次真实的慢 SQL 定位全过程
数据库·后端
鹿角片ljp15 分钟前
力扣26.有序数组去重:HashSet vs 双指针法
java·算法
SweetCode19 分钟前
汉诺塔问题
android·java·数据库
superman超哥21 分钟前
Rust Cargo Run 与 Cargo Test 命令:开发工作流的双引擎
开发语言·后端·rust·cargo run·cargo test·开发工作流·双引擎
MMM_FanLe22 分钟前
微博/朋友圈/点赞/评论系统设计
后端
架构精进之路30 分钟前
AI 编程:重构工作流的思维与实践
后端·ai编程·trae