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

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

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

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

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

相关推荐
niuniudengdeng10 分钟前
从小程序到 WebView:一个理发店管理系统的全栈架构设计与落地实践
java·python
LccKyI17 分钟前
C#基础编程 面试题汇总(二)
java·面试·c#
灯澜忆梦18 分钟前
【基于GO的Web开发14】gin请求重定向
前端·后端·golang·gin
一晌小贪欢21 分钟前
Python办公17:暴力拆分——按页数或指定范围提取 PDF 核心页面
java·开发语言·python·pdf·excel·数据可视化·python办公
2401_8346369922 分钟前
Docker 容器化技术全解:从镜像构建到容器编排的完整教案1
java·docker·容器
东风破_26 分钟前
博客数据库进阶设计:点赞、收藏、评论、标签与文件表怎么建?
后端·mysql
jjjava2.028 分钟前
初步认识接口测试
java·可用性测试
吠品29 分钟前
TortoiseSVN 状态图标不显示的排查与解决办法
java·服务器·数据库
MetaLite30 分钟前
SpringBoot整合Caffeine-集群本地缓存如何保证分布式一致性
spring boot·分布式·缓存