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

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

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

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

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

相关推荐
mygljx20 分钟前
SpringBoot+Mybatis-plus实现分页查询(一看就会)
spring boot·mybatis·状态模式
小码哥_常4 小时前
别再被误导!try...catch性能大揭秘
后端
无巧不成书02186 小时前
30分钟入门Java:从历史到Hello World的小白指南
java·开发语言
苍何6 小时前
30分钟用 Agent 搓出一家跨境网店,疯了
后端
ssshooter6 小时前
Tauri 2 iOS 开发避坑指南:文件保存、Dialog 和 Documents 目录的那些坑
前端·后端·ios
追逐时光者6 小时前
一个基于 .NET Core + Vue3 构建的开源全栈平台 Admin 系统
后端·.net
程序员飞哥7 小时前
90后大龄程序员失业4个月终于上岸了
后端·面试·程序员
zs宝来了7 小时前
Playwright 自动发布 CSDN 的完整实践
java
彭于晏Yan8 小时前
Redisson分布式锁
spring boot·redis·分布式
吴声子夜歌8 小时前
TypeScript——基础类型(三)
java·linux·typescript