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

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

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

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

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

相关推荐
憧憬blog7 小时前
【Kiro开发集训营】拒绝“屎山”堆积:在 Kiro 中重构“需求-代码”的血缘关系
java·开发语言·kiro
e***74958 小时前
Spring Security 官网文档学习
java·学习·spring
n***i958 小时前
Java NIO文件操作
java·开发语言·nio
笃行客从不躺平9 小时前
接口幂等性(Idempotency)
java
爆更小哇9 小时前
MyBatis的TypeHandler :优雅地实现数据加密与解密
数据库·后端·mybatis
Hero | 柒10 小时前
JAVA反射机制
java·spring·反射
j***630810 小时前
Springboot项目中线程池使用整理
java·spring boot·后端
likuolei10 小时前
Eclipse 创建 Java 接口
java·数据库·eclipse
q***547510 小时前
Spring Boot 经典九设计模式全览
java·spring boot·设计模式
w***153110 小时前
Spring boot启动原理及相关组件
数据库·spring boot·后端