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

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

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

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

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

相关推荐
武子康14 小时前
大数据-269 实时数仓-Flink+HBase+DIM层数据处理实战:构建地区维度数据仓库
大数据·后端·flink
zjneymar14 小时前
苍穹外卖中一些知识点和问题
java·linux·服务器
Rsun0455114 小时前
5、Java 原型模式从入门到实战
java·开发语言·原型模式
lxh011314 小时前
最接近的三数之和
java·数据结构·算法
不会写DN14 小时前
处理非 UTF-8 输入:GB18030 回退策略
后端·go
我登哥MVP14 小时前
【SpringMVC笔记】 - 3 - 获取请求数据
java·spring boot·spring·servlet·tomcat·maven·intellij-idea
Predestination王瀞潞14 小时前
彻底解决IDEA Console控制台乱码(Python可供参考第一部分)
java·ide·intellij-idea
Seven9714 小时前
【从0到1构建一个ClaudeAgent】并发-后台任务
java
Java面试题总结14 小时前
Java常见面试题(160道)
java·开发语言