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

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

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

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

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

相关推荐
摇滚侠5 小时前
MyBatis 入门到项目实战 特殊 SQL 的执行 34-37
java·sql·mybatis
鱼人5 小时前
Go 操作 MySQL:常用写法与最佳实践
后端
挖坑的张师傅5 小时前
方便 Mac 本机运行 e2b 的沙箱方案 e2b-local
人工智能·后端
开心猴爷5 小时前
Flutter 如何自动上传 可以 IPA 把构建和上传分开处理
后端·ios
二月龙5 小时前
defer 执行顺序与底层原理,90% 的人都理解不全
后端
长大19885 小时前
新手常犯的 Go 语法错误,一次性帮你避坑
后端
小强19885 小时前
深入理解 Go 协程 Goroutine:并发编程的核心精髓
后端
chengliu05085 小时前
后端学习地图
后端
phltxy6 小时前
Spring AI 可观测性与 Zipkin 实战
java·人工智能·spring
兰令水6 小时前
leecodecode【面试150】【2026.6.13打卡-java版本】
java·算法·leetcode