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

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

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

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

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

相关推荐
luck_bor3 分钟前
File 类核心笔记
java·前端·算法
ZC跨境爬虫3 分钟前
模块化烹饪小程序开发日记 Day2:全局配置与 tabBar 实现
java·前端·javascript·微信小程序·html·notepad++
鹏程十八少9 分钟前
Android TransactionTooLargeException 的真相与修复:从 1.13MB Bundle 到 Binder 内核的完整剖析
前端·后端·面试
victory043110 分钟前
找实习也是在找自己
java·服务器·前端
geovindu13 分钟前
go: Monitor Pattern
开发语言·后端·设计模式·golang·监控模式
摇滚侠22 分钟前
MySQL 面试题 真正的 offer 偏方 Java 基础 Java 高级
java·数据库·mysql
郭龙_Jack26 分钟前
Java的虚拟线程 VS Go语言的goroutine
java·golang
risc12345627 分钟前
所有“能调用大模型”的框架分类
java·服务器·前端
va学弟28 分钟前
Agent入门开发(3):LangChain4j 应用
java·ai
ch.ju28 分钟前
Java程序设计(第3版)第四章——静态部分
java·开发语言